如何在 Python 中循环字典

了解如何遍历 Python 字典很有价值。这种技术允许您读取、操作和输出字典的内容。在 Python 中循环很容易。但是初学者可能会发现它有点令人困惑,尤其是在将它与更复杂的可迭代对象(例如字典)一起使用时。

以下是使用循环处理 Python 字典的一些方法。

遍历键和值

Python 中的字典包含键值对。您可以使用keys()方法遍历其键:

 myDict = {"A" : 2, "B" : 5, "C" : 6}
for i in myDict.keys():
print("Key"+" "+i)
Output:
Key A
Key B
Key C

不过,上面的代码比您需要的要冗长一些。您可以通过直接从myDict调用它们而不使用myDict.keys()来访问它们。

这是因为 Python for 循环在看到字典时默认选择键。所以你可以像这样写上面的代码:

 for key in myDict:
print("Key"+ " " +key)
Output:
Key A
Key B
Key C

要访问值,请使用相应的values()方法:

 myDict = {"A" : 2, "B" : 5, "C" : 6}
for i in myDict.values():
print(i)
Output:
2
5
6

同样,您可以使用它们的键直接访问这些值:

 for key in myDict:
print(myDict[key])
Output:
2
5
6

在遍历字典时,您可以同时访问其键和值。您可以通过两种方式执行此操作。

第一种方法是遍历字典并使用dict[key]方法访问值。然后打印循环中的每个键值对:

 for key in myDict:
print(key, "|", myDict[key])
Output:
A | 2
B | 5
C | 6

或者,您可以使用items()方法同时访问键和值:

 for key, value in myDict.items():
print(key, "|", value)
Output:
A | 2
B | 5
C | 6

有时,您可能希望以相反的顺序输出结果。下面是如何使用sorted()函数来做到这一点:

 myDict = {"A" : 2, "B" : 5, "C" : 6}
for key, value in sorted(myDict.items(), reverse=True):
print(key, "|", value)
Output:
C | 6
B | 5
A | 2

将字典转换为列表

使用迭代将字典转换为列表就像将列表转换为字典一样简单。

您可以为每个键值对创建一个包含单独元组的列表:

 myDict = {"A" : "MUO", "B" : "Google", "C" : "Python"}
myList = []
for key, value in myDict.items():
myList.append((key, value))
print(myList)
Output: [('A', 'MUO'), ('B', 'Google'), ('C', 'Python')]

或者您可以将字典转换为键值对的嵌套列表:

 myDict = {"A" : "MUO", "B" : "Google", "C" : "Python"}
myList = []
for key, value in myDict.items():
myList.append([key, value])
print(myList)
Output: [['A', 'MUO'], ['B', 'Google'], ['C', 'Python']]

如果您想将字典转换为拉伸或扁平化的列表:

 myDict = {"A" : "MUO", "B" : "Google", "C" : "Python"}
myList = []
for key, value in myDict.items():
myList+= key, value
print(myList)
Output: ['A', 'MUO', 'B', 'Google', 'C', 'Python']

将字典中的值相加

使用for循环对字典中的所有值求和很容易:

 myDict = {"A":6, "B":7, "C":9}
g = 0 # initilize a variable to store the running total
for i in myDict.values():
g += i # add each value to the total
print(g)
Output: 22

这是一个迭代等效于使用sum()函数本身,它是一个迭代器。因此,您可以使用sum()来添加值,而不是像上面那样循环:

 summedValues = sum(myDict.values())
print(summedValues)
Output: 22

循环遍历嵌套的 Python 字典

嵌套字典一开始可能有点令人困惑。但这就像遍历常规程序一样简单。

例如,下面的代码输出字典中每个列表的内容:

 myDict = {"A" : [1, 2, 3], "B" : [4, 5, 6]}
for i in myDict.keys():
print(myDict[i])
Output:
[1, 2, 3]
[4, 5, 6]

就像在常规字典中一样,循环出整个项目会输出单个元组中的所有键值对:

 myDict = {"A" : [1, 2, 3], "B" : [4, 5, 6]}
for i in myDict.items():
print(i)
Output:
('A', [1, 2, 3])
('B', [4, 5, 6])

相关: Python 词典:如何使用它编写更好的代码

您还可以在包含其他词典的词典中查看特定值。但请记住,复杂字典的值是其中其他字典的项目。本质上,复杂字典包含父键和子键。

让我们输出下面复杂字典中的值,看看它是如何工作的:

 complexArray = {
"Detail" : {
"Name" : "Idowu",
"Logs" : 20,
"isAdmin" : True
},
"Activities" : {
"Inputs" : 14,
"Input Type" : "Video"
}
}
for value in complexArray.values():
print(value)
Output:
{'Name': 'Idowu', 'Logs': 20, 'isAdmin': True}
{'Inputs': 14, 'Input Type': 'Video'}

使用这种洞察力,您可以打印上述字典中的特定值。

要查看Detail的值,例如:

 for value in complexArray["Detail"].values():
print(value)
Output:
Idowu
20
True

使用嵌套的for循环,您可以看到所有子键的所有值:

 for value in complexArray.values():
for i in value.values(): # get the values of each key in the child dictionaries
print(i)
Output:
Idowu
20
True
14
Video

无论它们的父字典如何,上面的迭代都会输出嵌套字典中的所有子值。

修改字典项目

由于字典是可变的,因此您可以在迭代时随意修改其内容。

例如,您可以交换键的并将输出插入新字典中:

 myDict = {"A" : "MUO", "B" : "Google", "C" : "Python"}
swappedDict = {}
for key, value in myDict.items():
swappedDict[value] = key
print(swappedDict)
Output: {'MUO': 'A', 'Google': 'B', 'Python': 'C'}

您也可以在字典理解中使用for循环来实现上述目的:

 swappedDict = {value:key for key, value in myDict.items()}
print(swappedDict)
Output: {'MUO': 'A', 'Google': 'B', 'Python': 'C'}

您还可以在循环遍历字典时从字典中删除特定项目。这是删除重复项的一种非常方便的方法。

下面的示例代码删除重复项,并在遍历数组后插入其中之一:

 myDict = {"A" : "MUO", "B" : "Google", "C" : "Python", "C" : "Python"}
for key in list(myDict.keys()):
if key == 'C':
del myDict[key]
myDict[key]="Python"
print(myDict)
Output: {'A': 'MUO', 'B': 'Google', 'C': 'Python'}

玩转 Python 词典

Python 字典是管理内存中数据的必备工具。因此,对字典数据结构的基本了解,包括如何遍历它并获得您想要的内容,将有助于您在实际场景中使用。

并且因为您可以自定义 Python 循环中发生的事情,所以它可以让您操纵您的输出。然而,一旦您理解了 Python 循环的基本概念,遍历 Python 字典就很容易了。