在字典中添加相同键的值

时间:2020-09-16 16:11:13

标签: python python-3.x dictionary

我的输入是一个列表,我想将其转换为字典并添加相同键的所有值。就像在随机列表中的给定示例中一样,k具有两个值13,因此字典中k的值将为{'k':4,'D':2}。然后按字母顺序对其进行排序

Input: ['k:1','D:2','k:3']
Output {'k':4,'D':2}
dlist = ['k:1','D:2','k:3']
  
dick ={}
for x in dlist:
  key,value = x.split(':')
  dick[key] = int(value)

print(dick)

我有上面的代码,但我不知道如何为k添加两个值?

3 个答案:

答案 0 :(得分:4)

您需要实际将值添加到现有值。现在,在代码中,您只需用新值覆盖旧值即可。

dick = {}
for x in dlist:
  key, value = x.split(':')
  dick[key] = dick.get(key, 0) + int(value)

dict.get(key, 0) gets the value of the key in the dictionary, with a default of zero

答案 1 :(得分:4)

可以通过将dick设为defaultdict来实现。因此,现在您可以+=的值了。

from collections import defaultdict

dlist = ['k:1','D:2','k:3']
  
dick = defaultdict(int)
for x in dlist:
    key, value = x.split(':')
    dick[key] += int(value)

print(dick)

答案 2 :(得分:0)

您可以使用groupby中的itertools对相同的值进行分组,然后求和。

import itertools
a=['k:1','D:2','k:3']
print({k:sum([int(j[1]) for j in v]) for k,v in itertools.groupby([i.split(":") for i in sorted(a)], lambda x: x[0])})

输出

{'D': 2, 'k': 4}