>我有以下字典:
default_wallart = {
"parkinglot":False,
"ferrari":False,
"roadtrip":False,
"sincity":False,
"peekaboo":False
}
我将其更新为True
当发生某些事情并触发它时。不过,我希望能够做的是检查字典中的任何值是否返回 False(如果它们确实为任何值返回 False,请做一件事,如果没有,请做其他事情)。
那么......我该怎么做呢?如果我可以在单行检查中执行此操作会很好,但如果没有,我可以解决这个问题。
注意:这是针对Python 2.7x
做
if all(default_wallart.values()):
# All True
else:
# At least one False.
值得一提的是,
>>> all({}.values()) # <=> all([])
True
所以,要注意这种可能性。根据您要执行的操作,您可能需要检查all(default_wallart.values()) and len(default_wallart)
<</p>
确定所有值都是True
或False
那么您可以使用in
运算符
default_wallart = {
"parkinglot":False,
"ferrari":False,
"roadtrip":False,
"sincity":False,
"peekaboo":False
}
has_False = False in default_wallart.values()
print(has_False) #prints True if there is at least one False
您不能简单地使用字典值上内置的all
,False
因为如果它发现任何虚假值,例如0
、[]
、{}
、
演示:
>>> default_wallart = {
...: "parkinglot":1,
...: "ferrari":1,
...: "roadtrip":1,
...: "sincity":0,
...: "peekaboo":1
...: }
>>>
>>> all(default_wallart.values())
False
我们还需要一个步骤,明确检查False
.
没有False
:
>>> all(x is not False for x in default_wallart.values())
True
至少有一项False
:
>>> any(x is False for x in default_wallart.values())
False
(检查True
或False
与is
很好,因为这两个是单例。
您可以使用所有:
def do_something():
return "do something"
def do_else():
return "do else"
default_wallart = {
"parkinglot":False,
"ferrari":False,
"roadtrip":False,
"sincity":False,
"peekaboo":False
}
result = do_something() if not all(default_wallart.itervalues()) else do_else()
print result
输出
do something