tengo una lista de (etiqueta, cuente) como este:Agrupación Python tuplas lista de tuplas
[('grape', 100), ('grape', 3), ('apple', 15), ('apple', 10), ('apple', 4), ('banana', 3)]
Desde que quiero resumir todos los valores con la misma etiqueta (las mismas etiquetas siempre adyacente) y devolver una lista en el mismo orden etiqueta:
[('grape', 103), ('apple', 29), ('banana', 3)]
sé que podría resolverlo con algo como:
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
pero hay una mo ¿Es una manera Pythonic/elegante/eficiente de hacer esto?
Me gusta el uso de 'operator.itemgetter' en lugar de' lambda'. – jathanism
Esto requiere que la lista se ordene en la primera clave. Si aún no está ordenado, el enfoque de default de ghostdog74 es una solución mucho mejor. –