Python程序:将字典列表转换为列表字典
在Python中,字典是一种内置的数据结构,它以键值对的形式存储数据。它允许根据相应的键高效地检索和修改值。字典中的每个键都必须是唯一的,并且与一个特定值相关联。
列表字典是一个字典,其中与每个键关联的值都是列表。这意味着每个键都映射到多个值,并且这些值作为列表中的元素存储。
另一方面,字典列表是一个列表,其中包含多个字典作为其元素。列表中的每个字典都可以拥有自己的一套键值对。
在本文中,我们将学习如何在Python中将字典列表转换为列表字典。
示例
ListOfDictionaries = [ {'cricketer': 'virat', 'score': 90}, {'cricketer': 'chahal', 'score': 30}, {'cricketer': 'dhoni', 'score': 120}, {'cricketer': 'pandya', 'score': 110}, {'cricketer': 'smith', 'score': 115} ] DictionaryofLists: {'cricketer': ['virat', 'chahal', 'dhoni', 'pandya', 'smith'], 'score': [90, 30, 120, 110, 115]}
使用的方法
以下是完成此任务的各种方法
使用for循环
使用字典推导式
使用pandas DataFrame
使用NumPy模块
方法1:使用for循环
此方法创建一个名为dictOflists的空字典,用于存储生成的列表字典。然后,它使用循环迭代输入列表中的每个字典,提取'cricketer'键作为字典的键,并将整个字典赋值为其值。最后,它显示生成的列表字典,其中每个板球运动员都是一个键,映射到他们各自的得分字典。
算法(步骤)
以下是执行所需任务的算法/步骤。
创建一个变量来存储输入的字典列表。
创建一个空字典来存储生成的集合字典。
使用for循环遍历输入字典列表,将输入字典列表转换为列表字典。
显示输出列表字典。
示例
下面的程序使用for循环将字典列表转换为列表字典。
# input list of dictionaries inputListOfDicts = [ {'cricketer': 'virat', 'scores': [40, 70, 90]}, {'cricketer': 'chahal', 'scores': [10, 25, 30]}, {'cricketer': 'dhoni', 'scores': [35, 65, 120]}, {'cricketer': 'pandya', 'scores': [58, 89, 110]}, {'cricketer': 'smith', 'scores': [76, 110, 115]} ] # creating an empty dictionary for # storing resultant dictionary of lists dictOflists = {} # traversing in the input list of dictionaries # for converting input list of dictionaries to a dictionary of lists for i in inputListOfDicts: # Getting values cricketer = i['cricketer'] dictOflists[cricketer] = i # displaying the output dictionary of lists dictOflists
输出
{'virat': {'cricketer': 'virat', 'scores': [40, 70, 90]}, 'chahal': {'cricketer': 'chahal', 'scores': [10, 25, 30]}, 'dhoni': {'cricketer': 'dhoni', 'scores': [35, 65, 120]}, 'pandya': {'cricketer': 'pandya', 'scores': [58, 89, 110]}, 'smith': {'cricketer': 'smith', 'scores': [76, 110, 115]}}
方法2:使用字典推导式
Python中的字典推导式是一种简洁的方式,可以通过迭代现有的序列或可迭代对象来创建字典,应用表达式或条件来生成键值对,从而产生简洁易读的代码。它允许在一行代码中创建字典,结合了迭代和转换。
算法(步骤)
以下是执行所需任务的算法/步骤。
创建一个变量来存储输入的字典列表。
打印字典,其中键是inputListOfDicts中第一个字典的键。
使用列表推导式打印值,这些值是inputListOfDicts中每个字典的对应值的列表。
示例
下面的程序使用字典推导式将字典列表转换为列表字典。
# input list of dictionaries inputListOfDicts = [ {'cricketer': 'virat', 'score': 90}, {'cricketer': 'chahal', 'score': 30}, {'cricketer': 'dhoni', 'score': 120}, {'cricketer': 'pandya', 'score': 110}, {'cricketer': 'smith', 'score': 115} ] # Using list comprehension print({dict_key: [p[dict_key] for p in inputListOfDicts] for dict_key in inputListOfDicts[0]})
输出
{'cricketer': ['virat', 'chahal', 'dhoni', 'pandya', 'smith'], 'score': [90, 30, 120, 110, 115]}
方法3:使用pandas DataFrame
在此方法中,我们将使用pandas dataframe将字典列表转换为列表字典。
语法
pandas.DataFrame(listofdictionary).to_dict(orient=”list”)
参数
listofdictionary: 输入字典列表。
to_dict()函数: 将其转换为字典
orient: 转换为列表
算法(步骤)
以下是执行所需任务的算法/步骤。
使用import关键字导入带有别名的pandas模块。
创建一个变量来存储输入的字典列表。
将字典列表inputListOfDicts转换为pandas DataFrame,然后将DataFrame转换为字典,其中键是DataFrame的列名,值是包含每个列值的列表。
示例
下面的程序使用pandas dataframe将字典列表转换为列表字典
# importing pandas module import pandas as pd # input list of dictionaries inputListOfDicts = [ {"cricketer": "virat", "score": 90}, {"cricketer": "chahal", "score": 30}, {"cricketer": "dhoni", "score": 120}, {"cricketer": "pandya", "score": 110}, {"cricketer": "smith", "score": 115}, ] # converting into dictionary of lists using pandas to_dict() pd.DataFrame(inputListOfDicts).to_dict(orient="list")
输出
On executing, the above program will generate the following output – {'cricketer': ['virat', 'chahal', 'dhoni', 'pandya', 'smith'], 'score': [90, 30, 120, 110, 115]}
方法4:使用NumPy模块
算法(步骤)
以下是执行所需任务的算法/步骤
使用import关键字导入带有别名的numpy模块。
使用array()函数创建一个numpy数组。
使用索引访问数组值的第一个元素(从0开始)。
使用键作为索引打印结果。
下面的程序使用numpy模块将字典列表转换为列表字典。
# importing numpy module with an alias name import numpy as np # creating a numpy array using array() function inputArray = np.array([(25, 45), (30, 70)], dtype=[('num1', int), ('num2', int)]) # accessing first array element using indexing # (starts from 0) print(inputArray[0]) # Printing by using key print(inputArray['num1'])
输出
On executing, the above program will generate the following output – (25, 45) [25 30]
代码创建了一个具有指定数据类型和字段名的NumPy数组inputArray。然后,它演示了使用索引和基于键的索引访问数组的元素。
结论
总而言之,本文研究了将字典列表转换为列表字典的四种不同技术。探讨的方法包括传统的for循环迭代、简洁的字典推导式、pandas DataFrame的使用以及NumPy模块的应用。每种方法都有其自身的优势和适用性,取决于具体的需要和可用的资源。