Python:使用字典'if not any'


if not any(myList[0:5]):

这也适用于字典而不是列表吗?我想检查字典的前五个键值对是否都具有值"False"。

如果您有要检查的键列表,请使用生成器表达式:

if not any(myDict[key] for key in myKeys):

不,字典键不排序。你不能说字典的"前五个键",意思是明确定义的东西。您可以获得键的列表,在这种情况下,它们当然会在该列表中排序,但这并不能说明字典本身中的"顺序"。

您可以做的是检查列表中的所有键,以查看字典中的相应值是否False

the_dict = { "k1": True, "k2": False, "k3": False, "k4": True, "k5": False, "k6": True }
check_keys = ["k1", "k2", "k3", "k4", "k5"]
found = 0
for k in check_keys:
  if k in the_dict and not the_dict[k]:
    found += 1
print "Found %u False values for the checked keys" % found

请注意,仅仅因为在初始化the_dict字典文本时对键值对有顺序,这并不意味着该顺序以某种方式保留在字典本身中。

如果你的键是可排序的,你当然可以手动对它们进行排序,然后先提取五个:

>>> print sorted(the_dict.keys()[:5]
['k1', 'k2', 'k3', 'k4', 'k5'] 

你要求这个:

if not any(myDict.values()[0:5]):

尽管未定义,但也许这就是您所要求的

如果需要在字典中排序,可以使用collections.OrderedDict

from collections import OrderedDict
d = OrderedDict()
for key in range(5):
    d[key] = False
d[6] = True
# This following check will succeed                                       
if not any(d.values()[:5]):
    print 'First five values are False'

最新更新