【问题标题】:How to sum values of the same key in a dictionary?如何对字典中相同键的值求和?
【发布时间】:2014-02-26 09:39:50
【问题描述】:

假设我的字典:mydict = [{"red":6}, {"blue":5}, {"red":12}]

这是我到目前为止所做的:

for key, value in mydict() :
    if key == mydict.keys():
        key[value] += value
    else:
        print (key, value)

我认为我做得不太对(卡了几个小时),但我希望输出看起来像这样:

blue 5
red 18

red 18
blue 5

【问题讨论】:

  • 字典的每个键只有一个值。如果您执行mydict = {"red":6, "blue":5, "red":12},然后打印mydict,您将只看到“red”的最后一个值。
  • 我已经编辑了帖子。
  • 好的,现在mydict 是一个单项字典列表。

标签: python-3.x dictionary sum key-value


【解决方案1】:

我不建议这样做,因为它会导致设计混乱:

class MyDict(dict):

    def __setitem__(self, key, value):
        if key in self:
            super().__setitem__(key, self[key] + value)
        else:
            super().__setitem__(key, value)

>>> d = MyDict({'red': 6, 'blue': 5})
>>> d['red'] = 12
>>> d
{'red': 18, 'blue': 5}
>>> d['blue']
5
>>> d['red']
18
>>> d['red'] = 8
>>> d
{'red': 26, 'blue': 5}

编辑:我看到您更改了初始对象...

>>> mydict = [{"red":6}, {"blue":5}, {"red":12}]
>>> sum(d.get('red', 0) for d in mydict)
18

【讨论】:

    【解决方案2】:

    您不能拥有具有相同键的字典.... 因为定义键是唯一的! 和最后一个键的分配,覆盖前一个

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-25
      • 1970-01-01
      • 2021-10-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多