检查 False 作为字典中的任何值



>我有以下字典:

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>

div class="one_answers">如果您

确定所有值都是TrueFalse那么您可以使用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

您不能简单地使用字典值上内置的allFalse因为如果它发现任何虚假值,例如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

(检查TrueFalseis很好,因为这两个是单例。

您可以使用所有:

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

最新更新