最佳方法取决于您使用的 Python 版本。它们都涉及使用& 运算符来设置交集。
- 3.0+
dict.keys() 方法
- 2.7+
dict.viewkeys() 接近
- 2.3+
set 接近
dict.keys() -- 3.0+
在 Python 3 中,dict.keys() 返回一个覆盖 & 运算符 [1] 的 dict_keys 对象:
x={1:'a', 2:'b', 3:'c'}
y={2:'beta', 3:'gamma', 4:'delta'}
for k in x.keys() & y.keys():
print(k, x[k], y[k])
输出:
2b 测试版
3 c伽马
但在 Python 2 中,这会给你一个TypeError:
回溯(最近一次通话最后):
对于 x.keys() 和 y.keys() 中的 k:
类型错误:& 不支持的操作数类型:“列表”和“列表”
dict.viewkeys() -- 2.7+
不过,别担心!此功能在 2.7 中被反向移植到 Python,但使用了不同的名称(以免破坏现有代码)dict.viewkeys():
for k in x.viewkeys() & y.viewkeys():
print k, x[k], y[k]
(相同的输出)
带套 -- 2.3+
从 2.3 开始,您可以使用 sets 和交集 (&) 运算符。
s & t:s 和 t 共有元素的新集合
例如:
for k in set(x) & set(y):
print k, x[k], y[k]
(相同的输出)
但是,在这里,您复制了键占用的空间(一次在字典中,用作键,然后再次在完全独立的 set 中)
[1]PEP-3106 Revamping dict.keys(), .values() and .items()