Pythonで対応する文字の整数を追加する関数を書く方法は?
例えば:
L=[('a',3),('b',4),('c',5),('a',2),('c',2),('b',1)]
Lのアイテムをループするだけで解決する方法は?
Pythonで対応する文字の整数を追加する関数を書く方法は?
例えば:
L=[('a',3),('b',4),('c',5),('a',2),('c',2),('b',1)]
Lのアイテムをループするだけで解決する方法は?
最も明確な方法は、ループしてそれらを合計することだと思います。
>>> L=[('a',3),('b',4),('c',5),('a',2),('c',2),('b',1)]
>>> import collections
>>> d=collections.defaultdict(int)
>>> for key,n in L:
... d[key] += n
...
>>> sorted(d.items())
[('a', 5), ('b', 5), ('c', 7)]
辞書を使用して、繰り返されるキー値を追加できます。そのように。
dict = {}
for i in L:
if i[0] in dict:
dict[i[0]] += i[1]
else:
dict[i[0]] = i[1]
dict.items()
出力は次のようになります: [('a', 5), ('c', 7), ('b', 5)]
必須の1行の itertools ソリューションは次のとおりです。
>>> import itertools
>>> [
... (k, sum(g[1] for g in group))
... for k, group in itertools.groupby(sorted(L), key=lambda x: x[0])
... ]
[('a', 5), ('b', 5), ('c', 7)]