1

Pythonで対応する文字の整数を追加する関数を書く方法は?

例えば:

   L=[('a',3),('b',4),('c',5),('a',2),('c',2),('b',1)]

Lのアイテムをループするだけで解決する方法は?

4

4 に答える 4

4

最も明確な方法は、ループしてそれらを合計することだと思います。

>>> 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)]
于 2012-11-22T07:55:36.877 に答える
0

辞書を使用して、繰り返されるキー値を追加できます。そのように。

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)]

于 2012-11-22T08:44:10.920 に答える
-2

必須の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)]
于 2012-11-22T07:52:44.650 に答える