我正在尝试比较两个词典。每个词典都有一个键和2个值分配给该键。每个字典可能是不同的长度。
我想编写一个循环,该循环首先检查两个字典中的键是否匹配。然后检查第一字典中的第一个和第二个值是否在第二个字典中的第一和第二个值之间。
示例字典:
gas_dict ={{'methane': (85, 98), 'ethane': (1, 12), 'propane': (0.1, 6)...x}
scope_dict ={'methane': (35, 100), 'ethane': (0.05, 15), 'propane': (1, 11)...n}
其中x and y< = 20但可能是不同的数字。
我代码的一部分成功检查键是匹配的:
for key in scope_dict.keys():
if key in gas_dict.keys():
但是,我一直坚持试图弄清楚如何从2个键比较4个值。
def range_subset(range1, range2):
return (range1[0]>=range2[0] and range1[1]<=range2[1])
for key in dict1.keys():
if key in dict2.keys():
print(key)
print(range_subset(dict1[key], dict2[key]))
print('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~')
我认为这是解决您问题的解决方案:
def gas_in_scope(gas_dict, scope_dict):
# For each gas
for k, (g1, g2) in gas_dict.items():
# Get scope values
if k not in scope_dict:
return False
s1, s2 = scope_dict[k]
# Check gas values are within the scope
if not (s1 <= g1 <= s2 and s1 <= g2 <= s2):
return False
# If all values are fine then return true
return True
print(gas_in_scope({'methane': (85, 98), 'ethane': ( 1, 12)},
{'methane': (35, 100), 'ethane': (0.05, 15)}))
# True
print(gas_in_scope({'methane': (85, 98), 'ethane': ( 1, 12), 'propane': (0.1, 6)},
{'methane': (35, 100), 'ethane': (0.05, 15), 'propane': ( 1, 11)}))
# False