如果我有一些字典:
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'}
在我尝试创建布尔语句的地方,如果这些键是否存在Weekends
或Weekdays
,有人能给我一个更好的方法吗?
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