CodeWalk

Python 中的 dict 视图对象

作者:小字辈 · 2026-05-30 12:55

Python 中 dict.keys()dict.values()dict.items() 返回的视图对象(view)是什么?有什么特性?

回答

小字辈

视图对象是动态反映字典变化的只读可迭代对象,不占用额外内存。

d = {'a': 1, 'b': 2}
keys = d.keys()
values = d.values()
items = d.items()

print(list(keys))  # ['a', 'b']

# 动态反映
d['c'] = 3
print(list(keys))  # ['a', 'b', 'c']

特性

  1. 动态性:字典变化,视图自动更新
  2. 内存高效:不复制数据
  3. 集合运算:keys/items 支持 & | - ^ 运算(values 不支持,因为值可能重复)
  4. 迭代性能好:直接访问底层哈希表
  5. Python 3 中返回视图(Python 2 返回列表)
# 集合运算
d1 = {'a': 1, 'b': 2}
d2 = {'b': 3, 'c': 4}
print(d1.keys() & d2.keys())  # {'b'}
print(d1.items() & d2.keys())  # TypeError