Python 中如何用 for 循环遍历字典?

Python 遍历字典的三种方式:直接遍历(得到键)、.items() 同时取键值(最常用)、.values() 只取值。Python 3.7+ 保持插入顺序。

最佳实践
Python 中如何用 for 循环遍历字典?封面

最常用的是 for k, v in d.items():——同时拿到键和值。直接 for k in d: 遍历的是键,for v in d.values(): 只遍历值。

三种遍历方式

d = {'a': 1, 'b': 2, 'c': 3}

# 1. 遍历键(默认行为)
for k in d:
    print(k, d[k])

# 2. 同时遍历键和值(推荐)
for k, v in d.items():
    print(k, v)

# 3. 只遍历值
for v in d.values():
    print(v)

遍历顺序

Python 3.7+ 起字典保持插入顺序,遍历顺序就是键值对添加的顺序(3.6 是实现细节,3.7 写入语言规范)。

注意事项

遍历时不要修改字典——增删键值对会抛 RuntimeError: dictionary changed size during iteration

# 错误
for k in d:
    if d[k] < 0:
        del d[k]

# 正确:先收集再删除,或遍历副本
for k in list(d):
    if d[k] < 0:
        del d[k]

# 或用字典推导式重建
d = {k: v for k, v in d.items() if v >= 0}

常见问题(FAQ)

Q:for k in d 和 for k in d.keys() 有区别吗?
A:效果相同,前者更简洁。后者显式表达意图,且 .keys() 返回的视图可以做集合运算(如 d1.keys() & d2.keys() 求共有键)。

Q:如何按键排序后遍历?
A:for k in sorted(d): 按键排序;for k, v in sorted(d.items(), key=lambda x: x[1]): 按值排序。

Q:字典推导式过滤时遍历的是什么?
A:{k: v for k, v in d.items() if 条件},本质是 items() 遍历加条件过滤,返回新字典不影响原字典。

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台