5.2、遍历字典
5.2.1、遍历所有的键值对
前面所学只能访问一个字典中的信息,要访问整个字典中的信息,可用for循环来实现
user = {
'user_name':'tom','user_sex':'man',
'user_age':'45','user_score':'98'
}
for key,value in user.items():
print('Key: '+key)
print('Value: ' + value)
输出结果:
Key: user_name
Value: tom
Key: user_sex
Value: man
Key: user_age
Value: 45
Key: user_score
Value: 98
代码解析:
定义了一个user字典,用for遍历字典可声明两个变量,用于存储价值对中的键和值。这两个变量可以用任何名称,见名知意就好,for语句第二部分包含了字典名和方法items()方法,它返回一个键值对的列表。通过循环,将键值对的每一个值存到指定的两个变量中,并输出。
citys = {
'tom':'北京',
'tony':'成都',
'mak':'上海',
'amy':'西安',
'mayun':'内蒙古',
}
for name,city in citys.items():
print(name.title() + '‘s favorite city is ' + city.title())
输出结果:
Tom‘s favorite city is 北京
Tony‘s favorite city is 成都
Mak‘s favorite city is 上海
Amy‘s favorite city is 西安
Mayun‘s favorite city is 内蒙古
#用循环,即便字典存储的是成百上千乃至百万人的信息,也能轻松遍历出。
5.2.2、遍历字典中的所有键
在不需要使用字典中的值时,只需键时,可用keys()方法。
citys = {
'tom':'北京',
'tony':'成都',
'mak':'上海',
'amy':'西安',
'mayun':'内蒙古',
}
for name in citys.keys():
print(name.title())
输出结果:
Tom
Tony
Mak
Amy
Mayun
扩展:遍历字典时,会默认遍历所有的键,因此,将
for name in citys.keys()
替换为for name in citys:
,输出也不会变
citys = {
'tom':'北京',
'tony':'成都',
'mak':'上海',
'amy':'西安',
'mayun':'内蒙古',
}
friends = ['tom','amy']
for name in citys.keys():
print(name.title())
if name in friends:
print(' Hello ' + name.title() +
', I see your favorite City is '+
citys[name].title()
)
输出结果:
Tom
Hello Tom, I see your favorite City is 北京
Tony
Mak
Amy
Hello Amy, I see your favorite City is 西安
Mayun
还可以用keys()方法判断某个人是否参加了调查。
citys = {
'tom':'北京',
'tony':'成都',
'mak':'上海',
'amy':'西安',
'mayun':'内蒙古',
}
if 'zhang' not in citys.keys():
print('zhang,请你来参加调查')
输出结果:
zhang,请你来参加调查
not in 表示 不包含
5.2.3、按顺序遍历字典中的所有键(sorted())
字典只记录键和值之间的关系,但是获取字典元素时,顺序是不确定的,如果想以特定的顺序返回元素,可调用sorted()方法,此函数返回特定顺序排列的键列表的副本
citys = {
'tom':'北京',
'tony':'成都',
'mak':'上海',
'amy':'西安',
'mayun':'内蒙古',
}
for name in sorted(citys.keys()):
print(name.title()+', thanke you')
输出结果:
Amy, thanke you
Mak, thanke you
Mayun, thanke you
Tom, thanke you
Tony, thanke you
注意:排序是在遍历之前就排列完毕
5.2.4、遍历字典中的所有值(value())
如果我们需要键值对中的值时,可调用 value(),此方法返回一个值的列表,不包含任何键。
citys = {
'tom':'北京',
'tony':'成都',
'mak':'上海',
'amy':'西安',
'mayun':'内蒙古',
}
for city in citys.values():
print(city)
输出结果:
北京
成都
上海
西安
内蒙古
此种做法只获取字典中的值,而没有考虑是否重复。涉及值很少的时候,也许不是问题,但是如果被调查的人有很多,最终的列表可能包含大量的重复项,为了剔除重复项,可用集合set,集合类似于列表,但是每个元素都必须是独一无二的
citys = {
'tom':'北京',
'tony':'成都',
'mak':'上海',
'amy':'西安',
'mayun':'内蒙古',
'sa':'成都',
'jer':'内蒙古',
}
for city in set(citys.values()):
print(city)
输出结果:
西安
北京
内蒙古
成都
上海
代码解析:
通过调用set()方法,可以让Python从列表中找出重复的元素,并使用这些元素来创建一个集合。