WICHTIGER HINWEIS: Sie müssen Ihre Daten sortieren Erstens.
Was ich nicht verstanden habe, ist, dass in der Beispielkonstruktion
groups = []
uniquekeys = []
for k, g in groupby(data, keyfunc):
groups.append(list(g)) # Store group iterator as a list
uniquekeys.append(k)
k
ist der aktuelle Gruppierungsschlüssel, und g
ist ein Iterator, mit dem Sie über die durch diesen Gruppierungsschlüssel definierte Gruppe iterieren können. Mit anderen Worten, die groupby
Iterator selbst gibt Iteratoren zurück.
Hier ist ein Beispiel dafür, das klarere Variablennamen verwendet:
from itertools import groupby
things = [("animal", "bear"), ("animal", "duck"), ("plant", "cactus"), ("vehicle", "speed boat"), ("vehicle", "school bus")]
for key, group in groupby(things, lambda x: x[0]):
for thing in group:
print("A %s is a %s." % (thing[1], key))
print("")
Sie erhalten dann die Ausgabe:
Ein Bär ist ein Tier.
Eine Ente ist ein Tier.
Ein Kaktus ist eine Pflanze.
Ein Schnellboot ist ein Fahrzeug.
Ein Schulbus ist ein Fahrzeug.
In diesem Beispiel, things
ist eine Liste von Tupeln, wobei das erste Element in jedem Tupel die Gruppe ist, zu der das zweite Element gehört.
El groupby()
nimmt zwei Argumente entgegen: (1) die zu gruppierenden Daten und (2) die Funktion, mit der sie gruppiert werden sollen.
Hier, lambda x: x[0]
sagt groupby()
um das erste Element in jedem Tupel als Gruppierungsschlüssel zu verwenden.
In dem oben genannten for
Erklärung, groupby
gibt drei Paare (Schlüssel, Gruppen-Iterator) zurück - eines für jeden eindeutigen Schlüssel. Sie können den zurückgegebenen Iterator verwenden, um über jedes einzelne Element in dieser Gruppe zu iterieren.
Hier ein leicht abgewandeltes Beispiel mit denselben Daten unter Verwendung eines Listenverständnisses:
for key, group in groupby(things, lambda x: x[0]):
listOfThings = " and ".join([thing[1] for thing in group])
print(key + "s: " + listOfThings + ".")
So erhalten Sie die Ausgabe:
Tiere: Bär und Ente.
Pflanzen: Kaktus.
Fahrzeuge: Schnellboot und Schulbus.
3 Stimmen
Ein nützlicher Fall für die wäre leetcode.com/probleme/string-komprimierung