Python3:将一个字典中每个键的多个值除以另一个字典中每个键的多个值

Python3: Dividing multiple values per key in one dictionary, by multiple values per key in another dictionary

我有2本字典。每个字典中的每个键都有 4 个值。我需要将第一个字典中每个键的每个值除以第二个字典中相应键的相应值,然后 return 结果到新字典。 例如:

dict1 = {'key1' = [1, 2, 3, 4], 'key2' = [5, 6, 7, 8]}
dict2 = {'key1' = [2, 2, 2, 2], 'key2' = [3, 3, 3, 3]}

应该导致:

result_dict = {'key1' = [0.5, 1, 1.5, 2], 'key2' = [1.67, 2, 2.33, 2.67]}

我尝试过的一些失败的解决方案:

def dict_div(dict1, dict2):
    result_dict = {}
    for k, v in dict1.items():
        if k in dict2:
            result_dict[k] = dict1/dict2[k]
    return result_dict
def dict_div(dict1, dict2):
    result_dict = {}
    return result_dict = {k: dict1[k] / dict2[k] for k in dict1 if k in dict2}
def dict_div(dict1, dict2):
    return numpy.divide(list(dict1.items()), list(dict2.items()))

你已经完成了一半。您的第一次尝试几乎全部成功,除了划分列表。

def dict_div(dict1, dict2):
    result_dict = {}
    for k, v in dict1.items():
        if k in dict2:
            result_dict[k] = numpy.divide(v, dict2[k])
    return result_dict

Numpy 允许您直接划分列表项,否则您可以使用类似的东西:

def divide_lists(list1, list2):
    result = []
    for i, v in enumerate(list1)
        result.append(v/list2[i])
    return result

也可以用第二次尝试的风格来写,虽然代码行数少,但一开始可能比较难看懂:

def dict_div(dict1, dict2):
    return {k: numpy.divide(v, dict2[k]) for k, v in dict1.items() if k in dict2}