【问题标题】:Python: How do I match keys then multiply the values of a key-value pair value with values from another dictionary?Python:如何匹配键然后将键值对值的值与另一个字典中的值相乘?
【发布时间】:2021-08-04 01:22:18
【问题描述】:

我有两个 python 字典。一个是嵌套字典,一个是常规字典,如下所示:

dict1 = {"12345": {"a": 2, "b": 4, "c": 3, "d": 5}, "67891": {"c": 5, "d": 4, "e": 2, "f": 1}}
dict2 = {"12345": 3, "67891": 4}

我想将 dict1 中的每个值与 dict1 和 dict2 之间的键匹配的 dict2 值相乘。结果会是这样:

# Desired output:
dict1 = {"12345": {"a": 6, "b": 12, "c": 9, "d": 15}, "67891": {"c": 20, "d": 16, "e": 8, "f": 4}}

我尝试输入此代码,但似乎不起作用。

for k, v in dict1.items():
    v= {v: v*dict2[k])}

【问题讨论】:

    标签: python dictionary


    【解决方案1】:

    使用循环和dict理解

    例如:

    dict1 = {"12345": {"a": 2, "b": 4, "c": 3, "d": 5}, "67891": {"c": 5, "d": 4, "e": 2, "f": 1}}
    dict2 = {"12345": 3, "67891": 4}
    
    for k, v in dict2.items():
        dict1[k] = {m: n*v for m, n in dict1[k].items()}
    
    print(dict1)
    

    输出:

    {'12345': {'a': 6, 'b': 12, 'c': 9, 'd': 15},
     '67891': {'c': 20, 'd': 16, 'e': 8, 'f': 4}}
    

    【讨论】:

    • 这会匹配键吗?如果我在 dict2 或 dict1 中有不同的键值对或不同的顺序怎么办?
    • 是的,确实如此。在dict理解中,我正在寻找关键dict1[k].items()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-12
    • 2017-08-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多