原文: https://www.freecodecamp.org/news/dictionary-iteration-in-python/

在 Python 中,字典是内置的数据结构之一 (其他的是元组、列表和集合)。字典是一个键:值对的集合,你可以用它们来解决各种编程问题。

字典非常灵活。你可以分别获得键和值,甚至可以一起获得。

这篇文章是关于用 for 循环遍历字典,但你也可以用三个方法遍历字典:

  • key() 方法:得到字典中的键
  • values() 方法:得到字典中的值
  • items() 方法:获得字典中的键和值

在下面的例子中,我用这 3 个方法来获得字典中的键、值和项。

states_tz_dict = {
    'Florida': 'EST and CST',
    'Hawaii': 'HST',
    'Arizona': 'DST',
    'Colorado': 'MST',
    'Idaho': 'MST and PST',
    'Texas': 'CST and MST',
    'Washington': 'PST',
    'Wisconsin': 'CST'
}

# 键
states_keys = states_tz_dict.keys()
print(states_keys) # dict_keys(['Florida', 'Hawaii', 'Arizona', 'Colorado', 'Idaho', 'Texas', 'Washington', 'Wisconsin'])

#  值
tz_values = states_tz_dict.values()
print(tz_values) # dict_values(['EST and CST', 'HST', 'DST', 'MST', 'MST and PST', 'CST and MST', 'PST', 'CST']) 

# 键和值
states_tz_dict_items = states_tz_dict.items()
print(states_tz_dict_items) # dict_items([('Florida', 'EST and CST'), ('Hawaii', 'HST'), ('Arizona', 'DST'), ('Colorado', 'MST'), ('Idaho', 'MST and PST'), ('Texas', 'CST and MST'), ('Washington', 'PST'), ('Wisconsin', 'CST')])

这就是我们做的一些迭代。但是你也可以用 for 循环来遍历一个字典。这就是我们在本教程中要研究的内容。

我们将讨论的内容

  • 如何用 for 循环遍历一个字典
  • 如何用 for 循环遍历字典的键
  • 如何用 for 循环遍历字典的值
  • 如何用 for 循环遍历字典中的项目
  • 如何在字典中进行循环并将其转换为一个元组列表
  • 小结

如何用 for 循环来迭代一个字典

使用 Python for 循环,你可以遍历字典的键、值或项。你也可以在字典中循环,把 key:value 对放在一个元组的列表中。我们将一个一个地看。

如何用 for 循环遍历字典的键值

还记得我在本文的第一部分是如何用 keys() 方法得到字典的键吗?你可以在 for 循环中使用同样的方法,并将每个键分配给一个变量,我们可以称之为 k

states_tz_dict = {
    'Florida': 'EST and CST',
    'Hawaii': 'HST',
    'Arizona': 'DST',
    'Colorado': 'MST',
    'Idaho': 'MST and PST',
    'Texas': 'CST and MST',
    'Washington': 'PST',
    'Wisconsin': 'CST'
}

for k in states_tz_dict.keys():
    print(k)

# Result:
# Florida   
# Hawaii    
# Arizona   
# Colorado  
# Idaho     
# Texas     
# Washington
# Wisconsin

如何用 for 循环遍历字典的值

你也可以在 for 循环中使用 values() 方法,并将值赋给一个变量,你可以称之为 v

states_tz_dict = {
    'Florida': 'EST and CST',
    'Hawaii': 'HST',
    'Arizona': 'DST',
    'Colorado': 'MST',
    'Idaho': 'MST and PST',
    'Texas': 'CST and MST',
    'Washington': 'PST',
    'Wisconsin': 'CST'
}

for v in states_tz_dict.values():
    print(v)
    
# Result:
# EST and CST
# HST        
# DST        
# MST        
# MST and PST
# CST and MST
# PST        
# CST

如何用 for 循环遍历字典项目

items() 方法在获取 for 循环中的键和值时很方便。这一次,你必须分配两个变量而不是一个:

states_tz_dict = {
    'Florida': 'EST and CST',
    'Hawaii': 'HST',
    'Arizona': 'DST',
    'Colorado': 'MST',
    'Idaho': 'MST and PST',
    'Texas': 'CST and MST',
    'Washington': 'PST',
    'Wisconsin': 'CST'
}

for k, v in states_tz_dict.items():
    print(k,"--->", v)

# Result:
# Florida ---> EST and CST
# Hawaii ---> HST
# Arizona ---> DST        
# Colorado ---> MST       
# Idaho ---> MST and PST  
# Texas ---> CST and MST  
# Washington ---> PST     
# Wisconsin ---> CST 

注意:你可以在 for 循环中使用任何字母作为变量。不一定非得是 k 或 v,或 k、v。

如何在一个字典中循环并将其转换为一个元组的列表

要在 Python 中把一个字典转换成一个元组的列表,你仍然必须在 for 循环中使用 items() 方法。

但是这一次,你必须用方括号包围这个循环。你还必须把这个循环分配给一个单独的变量,并把这个变量的键和值都用括号包起来:

states_tz_dict = {
    'Florida': 'EST and CST',
    'Hawaii': 'HST',
    'Arizona': 'DST',
    'Colorado': 'MST',
    'Idaho': 'MST and PST',
    'Texas': 'CST and MST',
    'Washington': 'PST',
    'Wisconsin': 'CST'
}

list_of_tuples = [(k, v) for k, v in states_tz_dict.items()]
print(list_of_tuples)

# Result: [('Florida', 'EST and CST'), ('Hawaii', 'HST'), ('Arizona', 'DST'), ('Colorado', 'MST'), ('Idaho', 'MST and PST'), ('Texas', 'CST 
# and MST'), ('Washington', 'PST'), ('Wisconsin', 'CST')]

小结

在本教程中,我们研究了如何用 for 循环来迭代一个字典。

如果你不想使用 for 循环,你也可以像本文第一部分那样直接使用 keys()values()items() 方法。

如果你觉得这篇文章有帮助,请在社交媒体上分享它。