我有一个类似这样的(label,count)元组列表:
[('grape', 100), ('grape', 3), ('apple', 15), ('apple', 10), ('apple', 4), ('banana', 3)]
我希望对具有相同标签的所有值进行求和(相同标签始终相邻),并按照相同标签的顺序返回一个列表:
[('grape', 103), ('apple', 29), ('banana', 3)]
我知道我可以用像这样的东西来解决它:def group(l):
result = []
if l:
this_label = l[0][0]
this_count = 0
for label, count in l:
if label != this_label:
result.append((this_label, this_count))
this_label = label
this_count = 0
this_count += count
result.append((this_label, this_count))
return result
但是是否有更符合Python语言风格、更优雅、更高效的方法来实现这个?
operator.itemgetter
代替lambda
的用法。 - jathanismoperator
而不是lambda
? - Adrian Guerra