【问题标题】:sum multiple values by index in two dictionaries [duplicate]在两个字典中按索引对多个值求和[重复]
【发布时间】:2020-07-15 15:42:21
【问题描述】:

我有两本字典

first_dict = {2020: [1000, 50], 2021: [2000, 10], 2024: [500, 5]}
second_dict = {2019: [500, 20], 2020: [2000, 30], 2021: [1000, 10]}

如何将具有相同键的第一个值和第二个值相加。生产:

resulting_dict = {2019: [500, 20], 2020: [3000, 80], 2021: [3000, 20], 2024: [500, 5]}

【问题讨论】:

    标签: python dictionary sum


    【解决方案1】:

    如果你确定所有列表的长度都是 2,你可以使用这个:

    first_dict = {2020: [1000, 50], 2021: [2000, 10], 2024: [500, 5]}
    second_dict = {2019: [500, 20], 2020: [2000, 30], 2021: [1000, 10]}
    
    keys = set(first_dict).union(second_dict)    
    res = {k: list(map(sum, zip(first_dict.get(k, [0, 0]), second_dict.get(k, [0, 0])))) for k in keys}
    print(res)  # -> {2019: [500, 20], 2020: [3000, 80], 2021: [3000, 20], 2024: [500, 5]}
    

    如果值列表的长度可以变化,我会使用zip_longest from itertools

    res = {k: list(map(sum, zip_longest(first_dict.get(k, [0]), 
                                        second_dict.get(k, [0]), 
                                        fillvalue=0))) for k in keys}
    

    【讨论】:

      猜你喜欢
      • 2021-06-03
      • 1970-01-01
      • 2019-12-31
      • 2013-02-13
      • 1970-01-01
      • 2016-12-11
      • 1970-01-01
      • 1970-01-01
      • 2017-08-09
      相关资源
      最近更新 更多