我有两个口述。他们共用一些钥匙。我想遍历这些共享密钥。这里有三种方法。在
x={1:'a', 2:'b', 3:'c'}
y={2:'beta', 3:'gamma', 4:'delta'}
for n in (key for key in x if key in y):
print(n)
for n in x:
if n in y:
print(n)
for n in x:
if n not in y:
continue
print(n)
第一本看起来将来很难阅读。在
第二个循环中会有很多缩进。在
第三种方法使用continue
,我发现这使得代码更难理解。在
我应该用什么有标准吗?它是这三种中的一种吗?在
如果你想避免缩进(不过,真的,看起来不太像),想要比第一个更清晰的东西,你可以使用一个集合交集:
&;是交集运算符,确保只迭代共享键。如果要迭代所有键,请使用x.keys()| y.keys()
最佳方法取决于您使用的Python版本。它们都涉及到对集合交集使用
&
运算符。在dict.keys()
方法dict.viewkeys()
方法set
方法数字键()3.0+
在Python3中,} 对象,该对象重写了amp;运算符[1]:
dict.keys()
返回一个^{输出:
^{pr2}$但是在python2中,这将给您一个
TypeError
:dict.view键()2.7+
不过,别着急!这个功能在2.7中被后移植到Python中,但是使用了不同的名称(以免破坏现有代码),^{} :
(相同输出)
带集合2.3+
从2.3开始,您可以使用^{} ,以及交集运算符。在
例如:
(相同输出)
但是,在这里,您复制了键所占用的空间(一次在字典中,用作键,再一次在一个完全独立的
set
)中)[1]PEP-3106 Revamping dict.keys(), .values() and .items()
相关问题 更多 >
编程相关推荐