如何编写一个函数来在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)]
您可以尝试定义这样的函数:
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)]
您可以使用字典并添加重复的键值,就像那样。
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)]
这是强制性的单行 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)]