J'ai une liste de (étiquette, compter) tuples comme ceci:Groupement liste tuple Python
[('grape', 100), ('grape', 3), ('apple', 15), ('apple', 10), ('apple', 4), ('banana', 3)]
A partir de ce que je veux résumer toutes les valeurs avec la même étiquette (mêmes étiquettes toujours adjacentes) et retourner une liste dans le même ordre étiquette:
[('grape', 103), ('apple', 29), ('banana', 3)]
Je sais que je pourrais le résoudre avec quelque chose comme:
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
Mais est-il un mois re Pythonic/élégant/moyen efficace pour ce faire?
J'aime l'utilisation de 'operator.itemgetter' à la place de' lambda'. – jathanism
Cela nécessite que la liste soit triée sur la première clé. Si elle n'est pas déjà triée, l'approche defaultdict de ghostdog74 est une bien meilleure solution. –