我想做的事情是:

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

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

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


当前回答

使用集:

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

另外:

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

其他回答

这应该可以工作:

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()的正常短路行为。

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

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

短而甜

{"key1", "key2"} <= {*dict_name}

你可以这样做:

>>> 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