我想做的事情是:
foo = {
'foo': 1,
'zip': 2,
'zam': 3,
'bar': 4
}
if ("foo", "bar") in foo:
#do stuff
我如何检查是否foo和酒吧都在dict foo?
我想做的事情是:
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()的正常短路行为。
你可以这样做:
>>> if all(k in foo for k in ("foo","bar")):
... print "They're there!"
...
They're there!
并不是说这不是你没有想过的事情,但我发现最简单的事情通常是最好的:
if ("foo" in foo) and ("bar" in foo):
# do stuff
如果你想:
还可以获取键的值 多查字典
然后:
from operator import itemgetter
foo = {'foo':1,'zip':2,'zam':3,'bar':4}
keys = ("foo","bar")
getter = itemgetter(*keys) # returns all values
try:
values = getter(foo)
except KeyError:
# not both keys exist
pass
短而甜
{"key1", "key2"} <= {*dict_name}