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'