在dict中求和每个键的多个值?

时间:2016-12-13 09:15:42

标签: python dictionary

我有一个python字典,看起来像这样。

{ 'item1' : [1,2,3,4,5,6],
  'item2' : [2,3,1],
   .
   .
   .
  'item n' : [4,2,4,3,2]
}

现在我的要求是我要添加此dict&的数值。将其显示为: -

{    'item1' : [21],
     'item2' : [6],
      .
      .
      .
     'item n' : [15]
}

我只想要总结每个键的多个值。显示。仅供参考,我正在使用追加功能。以下是我的代码。

for row in range(2,sheet2.max_row):
    for column in "D": 
        cell_name = "{}{}".format(column, row)
    for column2 in "P":
        cell_name2 = "{}{}".format(column2,row)
        arrdata2dict.setdefault(sheet2[cell_name].value,[])
        arrdata2dict[sheet2[cell_name].value].append(sheet2[cell_name2].value)

3 个答案:

答案 0 :(得分:3)

这似乎不必要地复杂化。如果输入为

inpt = { 'item1' : [1,2,3,4,5,6],
         'item2' : [2,3,1],
         .
         .
         .
         'item n' : [4,2,4,3,2]
       }
然后,您可以使用dictionary comprehension代替:

out = {k: [sum(inpt[k])] for k in inpt.keys()}

答案 1 :(得分:2)

你可以动态创建字典:

Result = dict([(key, sum(values)) for key, values in yourDict.items()])
# or...
Result = {key: sum(values) for key, values in yourDict.items()}

在这里,新词典的值将是数字,但如果确实需要将它们作为列表,则可以将方括号内的sum括号括起来:{{1 }}

答案 2 :(得分:1)

items = {'item1' : [1,2,3,4,5,6],
  'item2' : [2,3,1],
  'item3' : [4,2,4,3,2]
}

for key, values in items.items():
    items[key] = sum(values)