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

时间:2019-03-18 20:31:50

标签: python-3.7

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

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()))

1 个答案:

答案 0 :(得分:1)

您在那儿。您的第一次尝试几乎完成了所有操作,除了分割列表。

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}