我的输入是一个列表,我想将其转换为字典并添加相同键的所有值。就像在随机列表中的给定示例中一样,k
具有两个值1
和3
,因此字典中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添加两个值?
答案 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}