Python 遍历字典列表
在本文中,我们将学习在Python中遍历字典列表的各种方法。在使用Python处理数据时,很常见遇到有一个字典列表的情况。每个字典代表一个单独的数据条目,您需要执行操作或从这些字典中提取特定信息。
使用for循环和字典访问方法
方法是使用for循环遍历列表中的每个字典。在循环内,我们可以使用字典访问方法如keys(),values()或items()来分别检索键,值或键值对。
语法
keys()
dictionary.keys()
keys()方法返回一个包含字典的键的视图对象。
values()
dictionary.values()
values()方法返回一个包含字典的值的视图对象。
items()
dictionary.items()
items()方法返回一个包含字典中键值对的元组的视图对象。
说明
- 创建字典的列表
list_of_dict
。 -
使用for循环遍历字典列表。
-
现在我们使用items()方法来访问每个字典中的键值对。
-
打印键值对。
示例
list_of_dict = [
{"course": "DBMS", "price": 1500},
{"course": "Python", "price": 2500},
{"course": "Java", "price": 2500},
]
for dict in list_of_dict:
for key, value in dict.items():
print(key, ":", value)
print("")
输出
course : DBMS
price : 1500
course : Python
price : 2500
course : Java
price : 2500
使用列表推导式
列表推导式提供了一种遍历字典列表并对每个字典执行操作的方法。现在,我们将使用列表推导式来遍历整个列表。
语法:
[expression for element in iterable]
- iterable: 可以是列表、集合、元组或任何Python可迭代对象。
-
element: 在可迭代对象中存在的项。
-
expression: 我们想对元素执行的操作。
解释
-
创建一个字典列表
list_of_dict
。 -
使用列表推导式遍历列表并在不同的列表中获取字典的信息。
示例
list_of_dict = [
{"course": "DBMS", "price": 1500},
{"course": "Python", "price": 2500},
{"course": "Java", "price": 2500},
]
# iterating through each dictionary
course= [dictionary["course"] for dictionary in list_of_dict]
price= [dictionary["price"] for dictionary in list_of_dict]
print(course)
print(price)
输出
['DBMS', 'Python', 'Java']
[1500, 2500, 2500]
使用map()函数
map()函数是一个内置的Python函数,它将指定的函数应用于可迭代对象中的每个项,对我们来说可迭代对象是一个列表,并返回一个迭代器,该迭代器产生结果。 它接受两个参数:要应用的函数和可迭代对象。
语法
map(function, iterable)
- Iterable: 要对其应用指定函数的项目序列。
-
Function: 我们想要对迭代器中的项目应用的函数。
解释
-
创建一个字典列表。
-
将函数和可迭代对象(即字典列表)传递给map()方法。
-
使用list()方法将map()的结果转换为列表。
示例
list_of_dict = [
{"course": "DBMS", "price": 1500},
{"course": "Python", "price": 2500},
{"course": "Java", "price": 2500},
]
def func(dict):
return dict["course"]
# applying the function to all the dictionaries present in the list.
course = list(map(func, list_of_dict))
print(course)
输出
['DBMS', 'Python', 'Java']
使用pandas库
DataFrame()构造函数将列表中的字典转换为数据帧。列表中的每个字典都将表示为数据帧中的一行。在处理大型数据集时,迭代字典列表非常方便。
语法
pd.DataFrame(iterable)
可迭代对象: 元素序列。例如列表,元组。
说明
- 创建一个字典列表
-
将字典列表传递给pandas库中的DataFrame()构造函数。
-
构造函数将返回一个数据帧对象,其中每个字典都作为数据帧中的一行
示例
import pandas as pd
list_of_dict = [
{"course": "DBMS", "price": 1500},
{"course": "Python", "price": 2500},
{"course": "Java", "price": 2500},
]
df = pd.DataFrame(list_of_dict)
print(df)
输出
course price
0 DBMS 1500
1 Python 2500
2 Java 2500
在pandas库的DataFrame类中使用from_records()方法
在这种方法中,我们将使用from_records()方法。pandas中的pd.DataFrame.from_records()方法允许我们从记录列表(元组或结构化数组)或可迭代对象创建DataFrame。
语法
pd.DataFrame.from_records(data)
- data: 结构化数组,在这种情况下是字典列表。
解释
- 创建一个字典列表。
-
将列表传递给from_records()方法。
-
from_records()方法将返回一个数据框,其中列表中的每个字典作为数据框中的一行。
示例
import pandas as pd
list_of_dict = [
{"course": "DBMS", "price": 1500},
{"course": "Python", "price": 2500},
{"course": "Java", "price": 2500},
]
df = pd.DataFrame.from_records(list_of_dict)
print(df)
输出
course price
0 DBMS 1500
1 Python 2500
2 Java 2500
结论
在本文中,我们探讨了不同的方法,包括循环、列表推导和甚至利用pandas库的能力遍历字典列表。