我想做的事情是:

foo = {
    'foo': 1,
    'zip': 2,
    'zam': 3,
    'bar': 4
}

if ("foo", "bar") in foo:
    #do stuff

我如何检查是否foo和酒吧都在dict foo?


当前回答

我认为这是最聪明和最精辟的。

{'key1','key2'} <= my_dict.keys()

其他回答

这应该可以工作:

if all(key in foo for key in ["foo","bar"]):
    # do stuff
    pass

提示:

在all()中使用方括号来创建一个列表推导式:

if all([key in foo for key in ["foo","bar"]]):

不仅是不必要的,而且是非常有害的,因为它们阻碍了all()的正常短路行为。

对我来说,简单和容易与pydash裁判中间的无键

import pydash as _
_.get(d, 'key1.key2.key3.whatevermaybeNone.inthemiddle', default=None) )

你可以这样做:

>>> if all(k in foo for k in ("foo","bar")):
...     print "They're there!"
...
They're there!

使用集:

if set(("foo", "bar")).issubset(foo):
    #do stuff

另外:

if set(("foo", "bar")) <= set(foo):
    #do stuff

那么使用呢?

 if reduce( (lambda x, y: x and foo.has_key(y) ), [ True, "foo", "bar"] ): # do stuff