Python:'if not not'使用字典

use*_*770 4 python dictionary list

if not any(myList[0:5]):
Run Code Online (Sandbox Code Playgroud)

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

Sim*_*got 10

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

if not any(myDict[key] for key in myKeys):
Run Code Online (Sandbox Code Playgroud)


unw*_*ind 5

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

你可以做的是检查列表中的所有键,看看字典中的相应值是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
Run Code Online (Sandbox Code Playgroud)

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

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

>>> print sorted(the_dict.keys()[:5]
['k1', 'k2', 'k3', 'k4', 'k5'] 
Run Code Online (Sandbox Code Playgroud)