【问题标题】:adding up perspective values in nested dictionaries在嵌套字典中添加透视值
【发布时间】:2021-09-16 18:59:13
【问题描述】:

我正在尝试添加两个不同的字典集(相同的键,不同的值)

mcdonalds_sausage_mcgriddle = {“卡路里”:550,“脂肪”:33,“碳水化合物”:44,“蛋白质”:19} fairlife_choc_milk = {“卡路里”:140,“脂肪”:5,“碳水化合物”:13,“蛋白质”:13}

bkfast = int(float(mcdonalds_sausage_mcgriddle)) + int(float(fairlife_choc_milk))

打印(bkfast)

我最终得到这个错误:TypeError: unsupported operand type(s) for +: 'dict' and 'dict'

这是我想要的输出: {“卡路里”:690,“脂肪”:38,“碳水化合物”:57,“蛋白质”:32}

【问题讨论】:

    标签: python generics


    【解决方案1】:

    使用推导式构建新字典:

    >>> mcdonalds_sausage_mcgriddle = {'calories': 550, 'fat': 33, 'carbs': 44, 'protein': 19}
    >>> fairlife_choc_milk = {'calories': 140, 'fat': 5, 'carbs': 13, 'protein': 13}
    >>> {k: v + fairlife_choc_milk[k] for k, v in mcdonalds_sausage_mcgriddle.items()}
    {'calories': 690, 'fat': 38, 'carbs': 57, 'protein': 32}
    

    如果您有任意数量的字典,更好的方法是遍历您的字典列表并将总数累积到一个新字典中:

    >>> from collections import defaultdict
    >>> breakfast = defaultdict(int)
    >>> for food in [mcdonalds_sausage_mcgriddle, fairlife_choc_milk]:
    ...     for k, v in food.items():
    ...         breakfast[k] += v
    ... 
    >>> breakfast
    defaultdict(<class 'int'>, {'calories': 690, 'fat': 38, 'carbs': 57, 'protein': 32})
    

    【讨论】:

    • 欣赏你 Samwise。注意到您在 food.items() 中列出了“for k, v: Breakfast[k] += v”。我确实有任意数量的听写。我如何修改这部分代码以适应这些字典(大约 75 项 atm)
    • 您正在谈论的代码解决了确切的情况。它完整​​地遍历每个字典(您提供给for food in ... 的所有字典中的所有项目)。
    • 明白。 tysm
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-06
    • 1970-01-01
    • 2020-08-17
    相关资源
    最近更新 更多