python验证字典中的多个布尔键



如果我有一些字典:

data1 = {'setpoint': '366', 'Weekdays': 'True', 'Weekends': 'True', 'starttime': '10:40', 'endtime': '11:40'}
data2 = {'setpoint': '366', 'Weekends': 'True', 'starttime': '10:40', 'endtime': '11:40'}
data3 = {'setpoint': '366', 'starttime': '10:40', 'endtime': '11:40'}

在我尝试创建布尔语句的地方,如果这些键是否存在WeekendsWeekdays,有人能给我一个更好的方法吗?

keys_to_verify = ['Weekends', 'Weekdays']

以下将返回True:

in_dictionary = all(key in data1 for key in keys_to_verify)
print(in_dictionary)

这将明显返回False

in_dictionary = all(key in data3 for key in keys_to_verify)
print(in_dictionary)

但这次返回False就像我错过了什么一样,非常感谢任何提示。

in_dictionary = all(key in data2 for key in keys_to_verify)
print(in_dictionary)

最后一个条件返回False,因为并非所有键都在那里如果您不需要所有这些,请使用任何

in_dictionary = any(key in data2 for key in keys_to_verify)
print(in_dictionary)
>> True

但你可能也想知道哪个在里面,然后我会这样做:

def find(verify, dct):
is_in = []
for key in verify:
if key in dct: is_in.append(key)
return is_in
find(keys_to_verify, data1)
['Weekends', 'Weekdays']   # -> in an if statement this would evaluate to True
find(keys_to_verify, data2) 
['Weekends']               # -> this, too
find(keys_to_verify, data3)
[]                         # -> and this to False

最新更新