Listelemente gruppieren

PythonPythonBeginner
Jetzt üben

This tutorial is from open-source community. Access the source code

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In Python können wir die Elemente einer Liste basierend auf einer gegebenen Funktion gruppieren. Dies kann in vielen Situationen nützlich sein, beispielsweise wenn wir eine Liste von Wörtern nach ihrer Länge oder eine Liste von Zahlen nach ihrer Parität gruppieren möchten. In dieser Herausforderung werden Sie aufgefordert, eine Funktion zu schreiben, die die Elemente einer Liste basierend auf einer gegebenen Funktion gruppiert.

Listelemente gruppieren

Schreiben Sie eine Funktion group_by(lst, fn), die eine Liste lst und eine Funktion fn als Argumente nimmt und ein Dictionary zurückgibt, wobei die Schlüssel die Ergebnisse der Anwendung von fn auf die Elemente von lst sind und die Werte Listen von Elementen aus lst sind, die den entsprechenden Schlüssel erzeugen, wenn fn auf sie angewendet wird.

Wenn wir beispielsweise eine Liste von Zahlen [6.1, 4.2, 6.3] haben und sie nach ihrem ganzzahligen Teil gruppieren möchten, können wir die floor-Funktion aus dem math-Modul als Gruppierungsfunktion verwenden. Die erwartete Ausgabe wäre {4: [4.2], 6: [6.1, 6.3]}.

from collections import defaultdict

def group_by(lst, fn):
  d = defaultdict(list)
  for el in lst:
    d[fn(el)].append(el)
  return dict(d)
from math import floor

group_by([6.1, 4.2, 6.3], floor) ## {4: [4.2], 6: [6.1, 6.3]}
group_by(['one', 'two', 'three'], len) ## {3: ['one', 'two'], 5: ['three']}

Zusammenfassung

In dieser Herausforderung haben Sie gelernt, wie man die Elemente einer Liste basierend auf einer gegebenen Funktion gruppiert. Sie haben auch eine Funktion geschrieben, die dies tut, indem Sie ein Dictionary verwenden, um die Gruppen zu speichern, und eine Schleife, um sie zu befüllen. Dies ist eine nützliche Technik, die in vielen verschiedenen Zusammenhängen angewendet werden kann.