一个 Python 字典可能只包含几个键-值对,也可能包含数百万个键-值对。字典可用于以各种方式存储信息,因此有多种遍历字典的方式:可遍历字典的所有键-值对、键、值。
16.1 遍历所有的键-值对
下面的字典存储用户的昵称、姓、名:
前面介绍可以根据键值访问字典的任何一项信息,如果要获取字典中的所有信息,可以使用一个 for循环 来遍历这个字典:
user_0 = {
‘username’:’changtui’,
‘first’:’lei’,
‘last’:’feng’
}
① for key,value in user_0.items():
② print(“\nKey:” + key)
③ print(“Value:” + value)
在①处,要编写用于遍历字典的for循环,可声明两个变量,用于存储键-值对中的键和值。对于这两个变量,可使用任何名称。for循环的第二部分包含字典名和方法items()。在上述示例中,我们使用这两个变量来打印每个键(见②)及其相关联的值(见③):
Key:username
Value:changtui
Key:last
Value:feng
Key:first
Value:lei
再看一个例子:
favorite_languages = {
‘jen’:’python’,
‘sara’:’ ruby ‘,
‘david’:’java’,
‘tom’:’c#’
}
① for name,language in favorite_languages.items():
② print(name.title() + ” ‘s favorite language is ” +
language.title() + ‘.’)
① 处的代码让Python遍历字典中的每个键-值对,并将键存储在变量name中,将值存储在变量language中。上述代码,将全部调查结果显示:
Tom ‘s favorite language is C#.
Sara ‘s favorite language is Ruby.
Jen ‘s favorite language is Python.
David ‘s favorite language is Java.
即便字典存储的是上千乃至上百万条数据,这种循环依旧有用。
16.2 遍历字典中的所有键
在不需要使用字典中的值时,使用方法key()。下面来遍历字典favorite_languages,并将每个被调查者的名字打印出来:
favorite_languages = {
‘jen’:’python’,
‘sara’:’ruby’,
‘david’:’java’,
‘tom’:’c#’
}
① for name in favorite_languages.keys():
② print(name.title())
①处的代码让Python提取字典中的所有键,并依次将它们存储到变量name中:
Tom
Sara
Jen
David
遍历字典时,默认遍历所有的键,因此下面两种方式效果相同:
① for name in favorite_languages.keys():
② for name in favorite_languages:
建议使用①方式,因为可以让代码更容易被理解。
方法keys()并非只能用于遍历,实际上,该方法返回一个 列表 ,其中包含字典中所有的键。例如:
# -*- coding:utf-8 -*-
favorite_languages = {
‘jen’:’python’,
‘sara’:’ruby’,
‘david’:’java’,
‘tom’:’c#’
}
① if ‘tony’ not in favorite_languages.keys():
② print(“Tony,我们邀请你参加我们的 编程语言 调研”)
①处的代码只是核实’tony’是否包含在列表中。如果他并不包含在这个列表中,就邀请他来参加调研:
Tony,我们邀请你参加我们的编程语言调研
16.3 遍历字典中的所有值
遍历字典中的值,使用方法values(),它返回一个值列表,而不包含任何键。例如,如果想获得一个这样的列表,其中只包含被调查者选择的各种语言,而不包含被调查者的名字,可以这样做:
# -*- coding:utf-8 -*-
favorite_languages = {
‘jen’:’python’,
‘sara’:’ruby’,
‘david’:’java’,
‘tom’:’python’
}
print(“以下语言在调研中被提及:”)
for language in favorite_languages.values():
print(language.title())
这条for语句提取字典中的每个值,并将它们依次存储到变量language中:
以下语言在调研中被提及:
Python
Ruby
Python
Java
这里只提取字典中所有的值,而没有考虑值是否重复。做数据分析了,我们只关心哪些语言被提及以及被提及多少次,我们这里先考虑剔除重复性。为了剔除重复性,可使用集合(set)。集合类似于列表,但其中每个元素都必须是独一无二的:
# -*- coding:utf-8 -*-
favorite_languages = {
‘jen’:’python’,
‘sara’:’ruby’,
‘david’:’java’,
‘tom’:’python’
}
print(“以下语言在调研中被提及:”)
① for language in set(favorite_languages.values()):
② print(language.title())
①处,通过对包含重复元素的列表调用set(),可让Python找出列表中独一无二的元素,并使用这些元素来创建一个集合。输出结果是一个不重复的列表,其中列出了被调查者提及的所有语言:
以下语言在调研中被提及:
Python
Java
Ruby
去除重复元素,还可以使用if语句,但Python内置的方法更简单、高效。随着Python学习的深入,经常会发现它内置的功能可帮助你以希望的方式处理数据。
16.4 写在最后
为了方便大家系统性的学习知识和参与项目实战,希望大家关注文章下方的广告区推广的号,是我自己运营的,头条上面很多想做的事情受到了极大的限制,知识内容无法形成结构性,也不方便交流,很多的互动和活动都在那个号上,欢迎加入,感谢支持~~