使用 for-in 循环遍历字典其实也是通过遍历普通列表来实现的。前面在介绍字典时已经提到字典包含了如下三个方法。
1)items():返回字典中所有 key-value对的列表
2)keys():返回字典中所有 key的列表。
3)values():返回字典中所有value的列表。
因此,如果要遍历字典,完全可以先调用字典的上面三个方法之一来获取字典的所有 key-value对、所有 key、所有value,再进行遍历。如下程序示范了使用for-in循环来遍历字典。
# !/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2024/01
# @Author : Laopi
dictdemo = {'软件测试划水老师傅':89,'软件测试老痞':91,'亚特兰':78}
#通过items()方法遍历所有的key-value对
#由于items方法放回的列表元素是key-value对,因此要声明两个变量
for key,value in dictdemo.items():
print("key",key)
print('value',value)
print('-----------------------')
# 通过keys()方法遍历所有的key
for key in dictdemo.keys():
print('key:',key)
#在通过key获取value
print('value:',dictdemo[key])
print('-----------------------')
# 通过values()方法遍历所有的value
for value in dictdemo.values():
print('value:',value)
上面程序通过三个for-in循环分别遍历了字典的所有 key-value对、所有key、所有value。尤其是通过字典的items()遍历所有的 key-value 对时,由于items0方法返回的是字典中所有 key-value对组成的列表,列表元素都是长度为 2的元组,因此程序要声明两个变量来分别代表 key、value这也是序列解包的应用。
假如需要实现一个程序,用于统计列表中各元素出现的次数。由于我们并不清楚列表中包含多少个元素,因此考虑定义一个字典,以列表的元素为key,该元素出现的次数为value。程序如下。
listdemo = [12,45,23,98,53,1,2,56,98,23,45,1,3,4,5,6,6,7]
countdemo = {}
for ele in listdemo:
#如果字典中包含ele代表的key
if ele in countdemo:
#将ele元素代表出现的次数加1
countdemo[ele] +=1
#如果字典中不包含ele代表的key,说明该元素还未出现
else:
#将ele元素代表出现的次数设为1
countdemo[ele] = 1
# 遍历dict,打印各元素出现的次数
for ele,count in countdemo.items():
print("%s出现的次数为:%d" % (ele,count))