我有一份清单:
[Racing, 100]
[Crossi, 100]
[Racing, 120]
[Racing, 130]
[Marcas, 105]
[Marcas, 109]
[Crossi, 130]
[Crossi, 104]我想要赛车,马尔卡斯和克罗西的总金额。如果可能的话,我想用一本关于python的字典来做。如下所示:
Brads{"Crossi": 334, "Marcas": 214, "Racing":350}是否可以只使用一个for循环来完成它?
发布于 2016-11-18 12:10:00
from collections import defaultdict
list_ = [['Racing', 100],['Crossi', 100],['Racing', 120],['Racing', 130],['Marcas', 105],['Marcas', 109],['Crossi', 130],['Crossi', 104]]
dic = defaultdict(int)
for i in list_:
dic[i[0]] += i[1]
print(dic)退出:
defaultdict(<class 'int'>, {'Marcas': 214, 'Crossi': 334, 'Racing': 350})setdefault默认值:
list_ = [['Racing', 100],['Crossi', 100],['Racing', 120],['Racing', 130],['Marcas', 105],['Marcas', 109],['Crossi', 130],['Crossi', 104]]
d = {}
for k,v in list_:
d[k] = d.setdefault(k,0) + v
print(d)退出:
{'Marcas': 214, 'Crossi': 334, 'Racing': 350}发布于 2016-11-18 12:07:23
您可以为此使用collections.defaultdict
from collections import defaultdict
l = [['Racing', 100],
['Crossi', 100],
['Racing', 120],
['Racing', 130],
['Marcas', 105],
['Marcas', 109],
['Crossi', 130],
['Crossi', 104]]
d = defaultdict(int)
for key, value in l:
d[key] += valueprint(d)输出
defaultdict(<class 'int'>, {'Marcas': 214, 'Racing': 350, 'Crossi': 334})发布于 2016-11-18 12:07:23
你可以这样做:
list_of_list = [
['Racing', 100],
['Crossi', 100],
['Racing', 120],
['Racing', 130],
['Marcas', 105],
['Marcas', 109],
['Crossi', 130],
['Crossi', 104]
]
people = {}
for selected_list in list_of_list:
name = selected_list[0]
if name in people:
people[name] += selected_list[1]
else:
people[name] = selected_list[1]https://stackoverflow.com/questions/40676641
复制相似问题