Pythonic速记字典中的键?

时间:2011-08-13 21:20:18

标签: dictionary python key

简单问题:是否有用于检查字典中几个键是否存在的简写?

'foo' in dct and 'bar' in dct and 'baz' in dct

3 个答案:

答案 0 :(得分:8)

all(x in dct for x in ('foo','bar','baz'))

答案 1 :(得分:7)

您可以将all()generator expression

一起使用
>>> all(x in dct for x in ('foo', 'bar', 'qux'))
False
>>> all(x in dct for x in ('foo', 'bar', 'baz'))
True
>>> 

它可以为您节省2个字符(但如果您需要检查更长的列表,可以为您节省更多)。

答案 2 :(得分:5)

{"foo","bar","baz"}.issubset(dct.keys())

对于python< 2.7,你必须用set(["foo","bar","baz"])

替换set literal

如果您喜欢运算符并且不介意创建另一个集合的性能,则可以使用集合上的<=运算符和dict的键集。

两种变化组合如下:

set(["foo","bar","baz"]) <= set(dct)

最后,如果你使用python 3,dict.keys()将返回一个setlike对象,这意味着你可以调用运算符而不会出现如下性能损失:

{"foo","bar","baz"} <= dct.keys()