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

您可以尝试定义这样的函数:

def sorting(L):

    dit = {}
    result = []
    for l in L :
        dit[l[0]]= 0


    for key , item in dit.items():
        for ll in L :
              if key == ll[0] :
                  dit[key] += ll[1]


    for key , item in dit.items():
        result.append((key , item))

    return sorted(result)

你会看到结果:

>>> sorting(L)  

[('a', 5), ('b', 5), ('c', 7)]
于 2012-11-22T09:17:51.453 回答
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

这是强制性的单行 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 回答