У меня есть словарь 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)
2
penta 13 Дек 2016 в 12:15

3 ответа

Лучший ответ

Вы можете создать словарь с суммами на лету:

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

Здесь значениями нового словаря будут числа, но если вам действительно нужно, чтобы они были списками, вы можете заключить вызов sum в квадратные скобки: [sum(values)].

2
ForceBru 13 Дек 2016 в 09:19
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)
1
Andrzej Dybionka 13 Дек 2016 в 09:21

Это кажется излишне сложным. Если у вас есть свой вклад как

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

Затем вы можете использовать словарь вместо этого:

out = {k: [sum(inpt[k])] for k in inpt.keys()}
3
Community 23 Май 2017 в 12:08