一个Python字典可能只包含几个键—值对,也可能包含数百万个键—值对。鉴于字典可能包含大量的数据,Python支持对字典遍历。字典可用于以各种方式存储信息,因此有多种遍历字典的方式:可遍历字典的所有键—值对、键或值。
1. 遍历所有的键—值对
我们可以像遍历列表一样使用 for 循环。不同的是:遍历字典的 for 循环,需声明两个变量,用于存储键—值对中的键和值。对于这两个变量,可使用任何名称。for 语句的第二部分包含字典名和方法items(),它返回一个键—值对列表。接下来,for循环依次将每个键—值对存储到指定的两个变量中。即便遍历字典时,键—值对的返回顺序也与存储顺序不同。Python不关心键—值对的存储顺序,而只跟踪键和值之间的关联关系。
# 输入
person = {'Name':'Youth','Age':'17'}
for key,value in person.items():
print("key is: "+key,"value is: "+value)
# 输出
key is: Name value is: Youth
key is: Age value is: 17
2. 遍历字典中的所有键
在不需要使用字典中的值时,方法keys()很有用。遍历字典时,会默认遍历所有的键,因此,如果将代码中的 for key in person.keys(): 替换为 for key in person: ,输出将不变。如果显式地使用方法keys()可让代码更容易理解。方法keys()并非只能用于遍历;实际上,它返回一个列表,其中包含字典中的所有键
# 输入
person = {'Name':'Youth','Age':'17'}
for key in person.keys():
print("key is: "+key)
for key in person:
print("key is: "+key)
# 输出
key is: Name
key is: Age
key is: Name
key is: Age
3. 遍历字典中的所有值
如果需要处理的信息主要是字典包含的值,可使用方法values(),它返回一个值列表,而不包含任何键。这种做法提取字典中所有的值,而没有考虑是否重复。通过对包含重复元素的列表调用set(),可让Python找出列表中独一无二的元素,并使用这些元素来创建一个集合。
# 输入
person = {
'Name1':'Youth','Age1':'17',
'Name2':'Tom','Age2':'17',
}
for value in person.values():
print("value is: "+ value)
for value in set(person.values()):
print("value is: "+value)
# 输出
value is: Youth
value is: 17
value is: Tom
value is: 17
value is: 17
value is: Tom
value is: Youth
4. 按顺序遍历字典中的所有键
字典总是明确地记录键和值之间的关联关系,但获取字典的元素时,获取顺序是不可预测的。这不是问题,通常来说你想要的只是获取与键相关联的正确的值。要以特定的顺序返回元素,可以在 for 循环中对返回的键进行排序。为此,可使用函数 sorted() 来获得按特定顺序排列的键列表。
# 输入
person = {
'Name1':'Youth','Age1':'17',
'Name2':'Tom','Age2':'18',
}
for value in sorted(person.values()):
print("value is: "+ value)
# 输出
value is: 17
value is: 18
value is: Tom
value is: Youth