Heim > Backend-Entwicklung > Python-Tutorial > Wie Python itertools.groupby() verwendet, um Datensätze nach Feldern zu gruppieren

Wie Python itertools.groupby() verwendet, um Datensätze nach Feldern zu gruppieren

不言
Freigeben: 2018-10-22 17:21:57
nach vorne
2665 Leute haben es durchsucht
Der Inhalt dieses Artikels handelt davon, wie Python Datensätze nach Feldern gruppiert. Ich hoffe, dass er für Sie hilfreich ist.

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)
Nach dem Login kopieren

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'}
Nach dem Login kopieren

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)
Nach dem Login kopieren
ein Ein-Schlüssel-Mehrwertwörterbuch zu erstellen

Ergebnis:

{'name': 'miaomiao', 'age': 28, 'uid': '160'}
{'name': 'miaomiao2', 'age': 28, 'uid': '150'}
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:segmentfault.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage