1. Anforderungen
Es gibt eine Reihe von Wörterbüchern oder Objektinstanzen, und wir möchten Daten nach einem bestimmten Feld gruppieren und iterieren.
2. Lösung
Die Funktion itertools.groupby() ist besonders nützlich beim Gruppieren von Daten.
Beispiel:
from operator import itemgetter from itertools import groupby rows=[ {'name':'mark','age':18,'uid':'110'}, {'name':'miaomiao','age':28,'uid':'160'}, {'name':'miaomiao2','age':28,'uid':'150'}, {'name':'xiaohei','age':38,'uid':'130'}, ] #首先根据age排序 rows.sort(key=itemgetter('age')) for age,items in groupby(rows,key=itemgetter('age')): print(age) for i in items: print(i)
Ergebnis:
18 {'name': 'mark', 'age': 18, 'uid': '110'} 28 {'name': 'miaomiao', 'age': 28, 'uid': '160'} {'name': 'miaomiao2', 'age': 28, 'uid': '150'} 38 {'name': 'xiaohei', 'age': 38, 'uid': '130'}
3. Analyse
Python-Implementierung eines Ein-Schlüssel-Mehrwertwörterbuchs
Die Funktion groupby() durchsucht die Sequenz nach Sequenzelementen mit demselben Wert (oder dem Wert, der von der durch den Parameterschlüssel angegebenen Funktion zurückgegeben wird) und gruppiert sie. groupby() erstellt einen Iterator und jede Iteration gibt einen Wert und einen sub_iterator zurück. Dieser Iterator kann alle Elemente mit diesem Wert in der Gruppe erzeugen.
Wichtig ist hier, die Daten zunächst nach Alter zu sortieren. Weil groupby() nicht sortiert.
Wenn Sie die Daten einfach nach Datum in einer großen Datenstruktur gruppieren, um einen wahlfreien Zugriff zu ermöglichen, ist es möglicherweise besser, mit defaultdict():
from collections import defaultdict rows=[ {'name':'mark','age':18,'uid':'110'}, {'name':'miaomiao','age':28,'uid':'160'}, {'name':'miaomiao2','age':28,'uid':'150'}, {'name':'xiaohei','age':38,'uid':'130'}, ] rows_by_age=defaultdict(list) for row in rows: rows_by_age[row['age']].append(row) for a in rows_by_age[28]: print(a)
Ergebnis:
{'name': 'miaomiao', 'age': 28, 'uid': '160'} {'name': 'miaomiao2', 'age': 28, 'uid': '150'}
Wenn die Sortierung nicht berücksichtigt wird, ist die Methode defaultdict im Allgemeinen schneller als groupby.
Das obige ist der detaillierte Inhalt vonWie Python itertools.groupby() verwendet, um Datensätze nach Feldern zu gruppieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!