比较两个字典中分配给一个键的多个值

时间:2018-12-19 10:08:36

标签: python dictionary

我正在尝试比较两个字典。每个词典都有一个键和分配给该键的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和y <= 20,但可以是不同的数字。

我的部分代码成功检查了密钥是否匹配:

for key in scope_dict.keys():
            if key in gas_dict.keys():

但是,我一直试图找出如何比较2个键的4个值。

2 个答案:

答案 0 :(得分:2)

Order

答案 1 :(得分:1)

我认为这是解决您问题的方法:

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