今天我们主要来介绍应用程序当中的个非通用 Python 代码片段,一起进步吧。代码 我们先从最常用的片段数据结构列表开始。 假设我们在 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 Pythons 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: 另一个常见的任务是当我们有两个或更多列表时,我们希望将它们全部收集到一个大列表中,香港云服务器其中较小列表的所有第一项构成较大列表中的第一个列表。 例如,如果我们有 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))]) 这一组日常列表任务是排序任务,根据列表中包含的元素的数据类型,我们将采用稍微不同的方式对它们进行排序。 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) 我们经常面临包含字符串的列表,我们需要按字母顺序、长度或我们想要或我们的应用程序需要的任何其他因素对这些列表进行排序。 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 有时,我们可能需要使用一个列表来对另一个列表进行排序,因此,我们将有一个数字列表(索引)和一个我们想使用这些索引进行排序的列表。 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: \ 列表代码片段的最后一个任务,如果给定一个列表并将其映射到字典中,也就是说,我们想将我们的列表转换为带有数字键的字典。 mylist = [blue, orange, green] #Map the list into a dict using the map, zip and dict functions 现在处理的数据类型是亿华云字典 假设我们有两个或多个字典,并且我们希望将它们全部合并为一个具有唯一键的字典。 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]) 一个非常常见的字典任务是如果我们有一个字典并且想要翻转它的键和值,键将成为值,而值将成为键。 当我们这样做时,我们需要确保没有重复的键。值可以重复,但键不能,并确保所有新键都是可以 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 接下来是字符串的处理 格式化字符串可能是我们几乎每天都需要完成的一项任务,在 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() 一项非常常见的任务就是检查字符串是否在与字符串列表中。 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: 有时,尤其是云服务器提供商在构建内存关键应用程序时,我们需要知道我们的字符串使用了多少内存。 str1 = "hello"Lists Snippets
Dictionary Snippets
String Snippets