1:将两个列表合并成一个字典

假设我们在 Python 中有两个列表,我们希望将它们合并为字典形式,其中一个列表的项作为字典的键,另一个作为值。这是在用 Python 编写代码时经常遇到的一个非常常见的问题。

但是为了解决这个问题,我们需要考虑几个限制,比如两个列表的大小,两个列表中元素的类型,以及其中是否有重复的元素,尤其是我们将使用的元素作为 key 时。我们可以通过使用 zip 等内置函数来解决这些问题

keys_list = ['A', 'B', 'C']
values_list = ['blue', 'red', 'bold']#There are 3 ways to convert these two lists into a dictionary
#1- Using Python's zip, dict functionz
dict_method_1 = dict(zip(keys_list, values_list))#2- Using the zip function with dictionary comprehensions
dict_method_2 = {key:value for key, value in zip(keys_list, values_list)}#3- Using the zip function with a loop
items_tuples = zip(keys_list, values_list)
dict_method_3 = {}
for key, value in items_tuples: if key in dict_method_3: pass # To avoid repeating keys.else: dict_method_3[key] = value

2:将两个或多个列表合并为一个包含列表的列表

另一个常见的任务是当我们有两个或更多列表时,我们希望将它们全部收集到一个大列表中,其中较小列表的所有第一项构成较大列表中的第一个列表

例如,如果我们有 4 个列表 [1,2,3], ['a','b','c'], ['h','e','y'] 和 [4,5, 6],我们想为这四个列表创建一个新列表;它将是 [[1,'a','h',4], [2,'b','e',5], [3,'c','y',6]]

def merge(*args, missing_val = None):
#missing_val will be used when one of the smaller lists is shorter tham the others.
#Get the maximum length within the smaller lists.max_length = max([len(lst) for lst in args])outList = []for i in range(max_length):result.append([args[k][i] if i < len(args[k]) else missing_val for k in range(len(args))])return outList

3:对字典列表进行排序

这一组日常列表任务是排序任务,根据列表中包含的元素的数据类型,我们将采用稍微不同的方式对它们进行排序。

dicts_lists = [{"Name": "James","Age": 20,},{"Name": "May","Age": 14,},{"Name": "Katy","Age": 23,}
]#There are different ways to sort that list
#1- Using the sort/ sorted function based on the age
dicts_lists.sort(key=lambda item: item.get("Age"))#2- Using itemgetter module based on name
from operator import itemgetter
f = itemgetter('Name')
dicts_lists.sort(key=f)

4:对字符串列表进行排序

我们经常面临包含字符串的列表,我们需要按字母顺序、长度或我们想要或我们的应用程序需要的任何其他因素对这些列表进行排序

my_list = ["blue", "red", "green"]#1- Using sort or srted directly or with specifc keys
my_list.sort() #sorts alphabetically or in an ascending order for numeric data
my_list = sorted(my_list, key=len) #sorts the list based on the length of the strings from shortest to longest.
# You can use reverse=True to flip the order#2- Using locale and functools
import locale
from functools import cmp_to_key
my_list = sorted(my_list, key=cmp_to_key(locale.strcoll))

5:根据另一个列表对列表进行排序

有时,我们可能需要使用一个列表来对另一个列表进行排序,因此,我们将有一个数字列表(索引)和一个我们想使用这些索引进行排序的列表

a = ['blue', 'green', 'orange', 'purple', 'yellow']
b = [3, 2, 5, 4, 1]
#Use list comprehensions to sort these lists
sortedList =  [val for (_, val) in sorted(zip(b, a), key=lambda x: \x[0])]

6:将列表映射到字典

列表代码片段的最后一个任务,如果给定一个列表并将其映射到字典中,也就是说,我们想将我们的列表转换为带有数字键的字典

mylist = ['blue', 'orange', 'green']
#Map the list into a dict using the map, zip and dict functions
mapped_dict = dict(zip(itr, map(fn, itr)))

Dictionary Snippets

现在处理的数据类型是字典

7:合并两个或多个字典

假设我们有两个或多个字典,并且我们希望将它们全部合并为一个具有唯一键的字典

from collections import defaultdict
#merge two or more dicts using the collections module
def merge_dicts(*dicts):mdict = defaultdict(list)for dict in dicts:for key in dict:res[key].append(d[key])return dict(mdict)

8:反转字典

一个非常常见的字典任务是如果我们有一个字典并且想要翻转它的键和值,键将成为值,而值将成为键

当我们这样做时,我们需要确保没有重复的键。值可以重复,但键不能,并确保所有新键都是可以 hashable 的

my_dict = {"brand": "Ford","model": "Mustang","year": 1964
}
#Invert the dictionary based on its content
#1- If we know all values are unique.
my_inverted_dict = dict(map(reversed, my_dict.items()))#2- If non-unique values exist
from collections import defaultdict
my_inverted_dict = defaultdict(list)
{my_inverted_dict[v].append(k) for k, v in my_dict.items()}#3- If any of the values are not hashable
my_dict = {value: key for key in my_inverted_dict for value in my_inverted_dict[key]}

String Snippets

接下来是字符串的处理

9:使用 f 字符串

格式化字符串可能是我们几乎每天都需要完成的一项任务,在 Python 中有多种方法可以格式化字符串,使用 f 字符串是比较好的选择

#Formatting strings with f string.
str_val = 'books'
num_val = 15
print(f'{num_val} {str_val}') # 15 books
print(f'{num_val % 2 = }') # 1
print(f'{str_val!r}') # books#Dealing with floats
price_val = 5.18362
print(f'{price_val:.2f}') # 5.18#Formatting dates
from datetime import datetime;
date_val = datetime.utcnow()
print(f'{date_val=:%Y-%m-%d}') # date_val=2021-09-24

10:检查子串

一项非常常见的任务就是检查字符串是否在与字符串列表中

addresses = ["123 Elm Street", "531 Oak Street", "678 Maple Street"]
street = "Elm Street"#The top 2 methods to check if street in any of the items in the addresses list
#1- Using the find method
for address in addresses:if address.find(street) >= 0:print(address)#2- Using the "in" keyword
for address in addresses:if street in address:print(address)

11:以字节为单位获取字符串的大小

有时,尤其是在构建内存关键应用程序时,我们需要知道我们的字符串使用了多少内存

str1 = "hello"
str2 = "你好"def str_size(s):return len(s.encode('utf-8'))str_size(str1)
str_size(str2)

12:Input/ Output operations

最后我们来看看输入输出方面的代码片段 №12:检查文件是否存在 在数据科学和许多其他应用程序中,我们经常需要从文件中读取数据或向其中写入数据,但要做到这一点,我们需要检查文件是否存在,因此,我们需要确保代码不会因 IO 错误而终止

#Checking if a file exists in two ways
#1- Using the OS module
import os
exists = os.path.isfile('/path/to/file')#2- Use the pathlib module for a better performance
from pathlib import Path
config = Path('/path/to/file')
if config.is_file(): pass

13:解析电子表格

另一种非常常见的文件交互是从电子表格中解析数据,我们使用 CSV 模块来帮助我们有效地执行该任务

import csv
csv_mapping_list = []
with open("/path/to/data.csv") as my_data:csv_reader = csv.reader(my_data, delimiter=",")line_count = 0for line in csv_reader:if line_count == 0:header = lineelse:row_dict = {key: value for key, value in zip(header, line)}csv_mapping_list.append(row_dict)line_count += 1

13个非常有用的Python代码片段相关推荐

  1. 13 个非常有用的 Python 代码片段,建议收藏

    大家好,今天我主要来介绍程序当中的通用 Python 代码片段,大家可以收藏.点赞.关注,一起进步吧 废话不多说,我们开始吧,技术交流文末获取 我们先从最常用的数据结构列表开始 №1:将两个列表合并成 ...

  2. 13 个非常有用的 Python 代码片段,建议收藏!

    作者 | 周萝卜 来源 | 萝卜大杂烩 今天我们主要来介绍应用程序当中的通用 Python 代码片段,一起进步吧 Lists Snippets 我们先从最常用的数据结构列表开始 №1:将两个列表合并成 ...

  3. python语言代码片段-有用的Python代码片段

    我列出的这些有用的Python代码片段,为我节省了大量的时间,并且我希望他们也能为你节省一些时间.大多数的这些片段出自寻找解决方案,查找博客和StackOverflow解决类似问题的答案.下面所有的代 ...

  4. 初学者怎样看懂python代码_新手入门必看,最常用的Python代码片段

    对于编程开发人员来讲,Python语法一开始可能看起来很奇怪.如果我们看到Python使用其他编程语言(例如Java)完成常见的工作,那会不会很意思?我们常见的代码片段称为"代码惯用法&qu ...

  5. 超常用的Python代码片段 | 备忘单

    「2019 Python开发者日」7折票限时开售!这一次我们依然"只讲技术,拒绝空谈",除了10余位一线Python技术专家的演讲外 ,大会还安排了深度培训实操环节,为开发者们带来 ...

  6. web简易计算器代码_30秒内便能学会的30个超实用Python代码片段

    许多人在数据科学.机器学习.web开发.脚本编写和自动化等领域中都会使用Python,它是一种十分流行的语言. Python流行的部分原因在于简单易学. 本文将简要介绍30个简短的.且能在30秒内掌握 ...

  7. 运行Python代码片段

    Python自带了一个在终端窗口中运行的解释器,让你无需保存并运行整个程序就能尝试运行Python代码片段. 本文将以如下方式列出代码片段: >>>print("Hello ...

  8. 201207-四步十秒通过VSCode创建Python代码片段Snippet

    如何操作: Step 1: 安装插件Snippet Creator Step 2: 在py文件中编辑好并选中需要的python代码片段 Step 3: 调出控制台,并输入Create Snippet ...

  9. 30秒内便能学会的30个超实用Python代码片段

    许多人在数据科学.机器学习.web开发.脚本编写和自动化等领域中都会使用Python,它是一种十分流行的语言. Python流行的部分原因在于简单易学. 本文将简要介绍30个简短的.且能在30秒内掌握 ...

最新文章

  1. 生命如何在复杂环境中生存?信息、调控和几何结构的交织
  2. layui select 赋值_layui给下拉框及日期组件赋值
  3. SVN 分支/合并/切换
  4. linux桌面环境 mac os,在Windows或Linux桌面上使用Mac OS Dashboard Widget | MOS86
  5. java微服务,微在哪_Java:ChronicleMap第3部分,快速微服务
  6. vue-cli3.0修改浏览器中的小图标
  7. Oracle函数索引与普通索引
  8. 利用SVD(Singular Value Decomposition)简化数据
  9. 【matlab】笔记_1
  10. Ubuntu 18.04.04 安装显卡驱动 nvidia安装
  11. 3D模型欣赏:《Sword girl》古风 女战士角色 次世代 zbrush雕刻
  12. 上海2018计算机中级职称,2018中级职称评定申报要求
  13. 泡泡龙游戏的完整制作流程
  14. BZOJ 3505 【CQOI2014】 数三角形
  15. SentiLR:Linguistic Knowledge Enhanced Language Representation for Sentiment Analysis 论文阅读笔记
  16. 初学者入门级!Python基础知识学习,纯干货【建议收藏】
  17. 了解美杜莎(Medusa)
  18. AnyLogic的相关操作第一天
  19. usb root hub的启用和设备的识别(1)
  20. 【转载】李焜耀:苍狼终将消失 最后生存下来的只有人类

热门文章

  1. eclipse neno高级安装
  2. Gateway GPRS support node (GGSN) 相关资料
  3. 我的世界服务器连接显示不见了,我的世界服务器为什么进去就卡,然后几十秒后显示“连接已丢失”怎么? 爱问知识人...
  4. 桌面右键新建菜单管理
  5. 西部狂徒自建服务器,在《西部狂徒》中如何快速建立自己根据地?杀人放火是上策...
  6. 介绍篇 决策引擎环节
  7. 数据库课程设计:图书信息管理系统(Java+MySQL)(附程序)
  8. 初学者制作自己的网站详细流程(可以上传自己做的网页)
  9. Android动态更改通知图标,修改通知标志  |  Android 开发者  |  Android Developers
  10. 手把手教你给女朋友编写一个公众号定时推送(java版本)