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模块的应用。每种方法都有其自身的优势和适用性,取决于具体的需要和可用的资源。
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP