Python3:在一个字典中为每个键划分多个值,在另一个字典中按每个键的多个值[关闭]

问题描述 投票:-3回答:1

我有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()))
python-3.7
1个回答
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}
© www.soinside.com 2019 - 2024. All rights reserved.