一个Python字典短则包含一个键值对,长则可能数以百万计。所以我们不会遍历字典可不行。因为Python字典是由一系列键值对组成的,所以我们可以遍历字典的所有键值对、键或值。
我们还是从一个学生字典开始:
student = {'num': '123456', 'name': 'kelvin', 'age': 18}
前面文章中我们知道怎么访问student字典中任何一项的信息,但如果要想访问字典中的所有信息该怎么办呢?
我们可以使用一个 for
循环来遍历这个字典:
student = {'num': '123456', 'name': 'kelvin', 'age': 18}
for key, value in student.items():
print("\nKey: " + key)
print("Value: " + str(value)) # 因为age对应的是数字类型,所以用str()方法将其转化成字符串
从代码可以看到,我们声明了两个变量 key
和 value
去存储键值对中的键和值。它们可以任意取名。
你甚至可以这样写:
for a, b in student.items():
这样写是没有关系的,不过为了见名知义,我还是建议叫 key
和 value
。
眼尖的小伙伴可能注意到 in
后面跟着的不是字典本身,而是 student.items()
,它返回的是一个键值对列表,事实上如果你 print(student.items())
的话,输出结果如下:
dict_items([('num', '123456'), ('name', 'kelvin'), ('age', 18)])
可见确实是键值对组成的元组列表。
接下来,for
循环依次将每一个键值对元组存储到指定的两个变量中(key
和value
)。
运行上述遍历student字典的代码:
注意:遍历字典时,键值对的返回顺序可能会与存储顺序不同。事实上,这点对我们编写程序并无影响。
有的时候,我们可能并不关心值是多少,可以使用方法 keys()
,keys()
方法会返回一个键列表。
student = {'num': '123456', 'name': 'kelvin', 'age': 18}
for key in student.keys():
print(key)
上述代码会打印出字典中所有的键:
与遍历所有键值对代码进行比较,会发现 for
后面仅跟着一个变量,而且 in
关键字后面遍历的对象是 student.keys()
,我们试着 print(student.keys())
可以看到 keys()
方法返回的是一个键列表。
我们甚至可以把 keys()
方法省略,因为遍历字典的时候,如果你在 for
后面仅声明一个变量,Python会默认遍历所有的键并依次将键赋值给这个变量。
因此,我们代码也可以这样写:
student = {'num': '123456', 'name': 'kelvin', 'age': 18}
for key in student:
print(key)
输出结果和上面是一样的。
Python提供了非常灵活的语法,你可以自由地选择自己喜欢的写法。
有时候我们仅需要遍历字典中的所有值而不关心键到底是什么,可以使用方法 values()
,values()
方法会返回一个值列表。
如果我们想打印出学生字典中所有的值:
student = {'num': '123456', 'name': 'kelvin', 'age': 18}
for value in student.values():
print(value)
运行这段代码,效果如下:
能够打印出所有值的关键在于 student.values()
方法返回了一个值列表。
Python遍历这个值列表并依次将值赋给 value
变量,然后打印输出。
本文主要讲解了Python遍历字典的三种方式,应该还是比较简单的。
笔者一直力求将复杂艰涩的概念讲得浅显易懂,但因为个人能力或许考虑的并不周全。如果您对文中讲的内容有任何疑惑,欢迎私信和我交流。