使用 'for' 循环遍历 Python 字典

使用 ‘for’ 循环遍历 Python 字典

技术背景

在 Python 中,字典(dictionary)是一种非常重要的数据结构,它以键值对(key-value pairs)的形式存储数据。在实际开发中,我们经常需要遍历字典中的键、值或键值对。Python 提供了多种方式来实现字典的遍历,其中使用 for 循环是最常见的方法之一。了解如何使用 for 循环遍历字典,能够帮助我们更高效地处理和操作字典数据。

实现步骤

1. 遍历字典的键

1
2
3
d = {'x': 1, 'y': 2, 'z': 3}
for key in d:
print(key, 'corresponds to', d[key])

在这个例子中,for 循环直接遍历字典 d,此时 key 是一个变量,它依次获取字典中的每个键。

2. 同时遍历字典的键和值

Python 3.x

1
2
3
d = {'x': 1, 'y': 2, 'z': 3}
for key, value in d.items():
print(key, 'corresponds to', value)

Python 2.x

1
2
3
d = {'x': 1, 'y': 2, 'z': 3}
for key, value in d.iteritems():
print(key, 'corresponds to', value)

在 Python 3.x 中,items() 方法返回一个视图对象,它会动态反映字典的变化;而在 Python 2.x 中,iteritems() 方法返回一个迭代器。

3. 遍历字典的值

1
2
3
d = {'x': 1, 'y': 2, 'z': 3}
for value in d.values():
print(value)

values() 方法返回字典中所有的值。

4. 遍历字典的键值对并获取索引

1
2
3
d = {'x': 1, 'y': 2, 'z': 3}
for i, (key, value) in enumerate(d.items()):
print(i, key, value)

使用 enumerate() 函数可以同时获取索引和键值对。

核心代码

以下是几种常见的遍历字典的代码示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 遍历键
d = {'x': 1, 'y': 2, 'z': 3}
for key in d:
print(key)

# 遍历值
for value in d.values():
print(value)

# 遍历键值对
for key, value in d.items():
print(key, value)

# 遍历键值对并获取索引
for i, (key, value) in enumerate(d.items()):
print(i, key, value)

最佳实践

  • 同时获取键和值:如果需要同时访问键和值,建议使用 items() 方法,这样可以避免重复查找键对应的值,提高效率。
1
2
3
d = {'x': 1, 'y': 2, 'z': 3}
for key, value in d.items():
print(key, 'corresponds to', value)
  • 使用描述性变量名:在循环中使用有意义的变量名,提高代码的可读性。
1
2
3
d = {'x': 1, 'y': 2, 'z': 3}
for letter, number in d.items():
print(letter, 'corresponds to', number)
  • 使用格式化字符串:在输出结果时,使用格式化字符串可以使输出更加清晰。
1
2
3
d = {'x': 1, 'y': 2, 'z': 3}
for letter, number in d.items():
print('{0} corresponds to {1}'.format(letter, number))

常见问题

1. key 是特殊关键字吗?

不是,key 只是一个普通的变量名,可以用其他变量名替代。例如:

1
2
3
d = {'x': 1, 'y': 2, 'z': 3}
for each_key in d:
print(each_key, '=>', d[each_key])

2. 在循环中修改字典会有什么问题?

在 Python 2 中,可以通过 my_dict.keys() 来避免在循环中修改字典导致的问题;而在 Python 3 中,my_dict.keys() 返回的是视图对象,任何对字典的修改都会影响视图,因此需要使用 list(my_dict) 来创建一个键的副本。

1
2
3
4
5
6
7
8
9
# Python 3
my_dict = {'a': 1, 'b': 2, 'c': 3}
# 错误示例
for k in my_dict:
my_dict.pop(k) # 会抛出 RuntimeError

# 正确示例
for k in list(my_dict):
my_dict.pop(k) # 正常执行

3. 字典的遍历顺序是怎样的?

在 Python 3.6 之前,字典的遍历顺序是无序的;从 Python 3.6 开始,字典会按照插入顺序进行遍历,并且从 Python 3.7 开始,这成为了 Python 语言规范的一部分。


使用 'for' 循环遍历 Python 字典
https://119291.xyz/posts/2025-04-18.iterating-over-dictionaries-using-for-loops/
作者
ww
发布于
2025年4月18日
许可协议