检查字典中的值是否为False

2024-06-25 05:41:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一句话:

default_wallart = {
    "parkinglot":False,
    "ferrari":False,
    "roadtrip":False,
    "sincity":False,
    "peekaboo":False
}

当有事情发生并触发它时,我将其更新为True。不过,我希望能够做的是检查dict中的任何值是否返回False(如果它们确实为任何值返回False,则执行一项操作,否则执行其他操作)。在

所以。。。我该怎么做?如果我能在一行检查中完成这项工作就好了,但如果不行,我可以解决这个问题。在

注意:这是针对Python2.7x的


Tags: falsetruedefault事情dictpeekabooroadtripferrari
3条回答

您可以使用all

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

输出

^{pr2}$

您不能简单地在字典的值上使用all,因为如果它发现任何falsy值,例如0[]{}{}FalseFalse。。。在

演示:

>>> default_wallart = { 
...:     "parkinglot":1, 
...:     "ferrari":1, 
...:     "roadtrip":1, 
...:     "sincity":0, 
...:     "peekaboo":1 
...: }                                                                                                                            
>>>                                                                                                                               
>>> all(default_wallart.values())                                                                                                 
False

我们还需要一个步骤,显式地检查False。在

没有False

^{pr2}$

至少有一个False

>>> any(x is False for x in default_wallart.values())                                                                             
False

(用True或{}与{}进行对照是可以的,因为这两个是单例的。)

做什么呢

if all(default_wallart.values()):
    # All True
else:
    # At least one False.


值得一提的是 ^{pr2}$

所以,注意这个可能性。根据您要执行的操作,您可能需要检查all(default_wallart.values()) and len(default_wallart)

相关问题 更多 >