Heim >Backend-Entwicklung >Python-Tutorial >Python – Gruppiert das erste Element in der Liste der Tupel nach dem zweiten Element

Python – Gruppiert das erste Element in der Liste der Tupel nach dem zweiten Element

王林
王林nach vorne
2023-09-14 15:49:021385Durchsuche

Python - 将元组列表中的第一个元素按第二个元素进行分组

In Python können Sie verschiedene Methoden verwenden, um Elemente in einer Liste von Tupeln basierend auf dem Wert des zweiten Elements zu gruppieren, z. B. die Verwendung eines Wörterbuchs oder die Verwendung der Methode itertools.groupby() und die Verwendung von defaultdict aus einer Sammlung. Das Gruppieren des ersten Elements nach dem zweiten Element in einer Liste von Tupeln bedeutet, dass Tupel mit demselben zweiten Element in einer einzigen Elementgruppe gruppiert werden können. In diesem Artikel besprechen wir, wie diese Methoden implementiert werden, damit wir das erste Element einfach basierend auf dem zweiten Element in der Liste der Tupel gruppieren können.

Methode 1: Verwenden Sie ein Wörterbuch

Bei dieser Methode wird ein Wörterbuch zum Gruppieren von Elementen verwendet. Diese Methode verwendet Schlüssel-Wert-Paare eines Wörterbuchs zum Speichern des ersten Elements und verwendet das zweite Element als Schlüssel.

Grammatik

dict_name[key]

Hier wird die Notation mit eckigen Klammern verwendet, um einem bestimmten Schlüssel im Wörterbuch einen Wert zuzuweisen. Wenn der Schlüssel bereits vorhanden ist, wird der Wert an die mit dem Schlüssel verknüpfte Liste angehängt; andernfalls wird ein neues Schlüssel-Wert-Paar erstellt.

Beispiel

Im folgenden Beispiel initialisieren wir zunächst ein leeres Wörterbuch „grouped_data“. Dann extrahieren wir für jedes Tupel in der Datenliste das zweite Element als Schlüssel (Element[1]) und das erste Element als Wert (Element[0]). Anschließend prüfen wir, ob der Schlüssel bereits in grouped_data vorhanden ist. Wenn ja, hängen wir den Wert an die bestehende Werteliste an, die diesem Schlüssel zugeordnet ist. Andernfalls erstellen wir ein neues Schlüssel-Wert-Paar, wobei „key“ das zweite Element und „value“ eine neue Liste mit dem ersten Element ist. Schließlich durchlaufen wir das Wörterbuch „grouped_data“ und geben jeden Schlüssel und seinen entsprechenden Wert aus.

# Sample tuple list
data = [('Apple', 'Fruit'), ('Banana', 'Fruit'), ('Carrot', 'Vegetable'), ('Potato', 'Vegetable')]

# Grouping elements using a dictionary
grouped_data = {}
for item in data:
    key = item[1]
    value = item[0]
    if key in grouped_data:
        grouped_data[key].append(value)
    else:
        grouped_data[key] = [value]

# Printing the grouped data
for key, values in grouped_data.items():
    print(key, ":", values)

Ausgabe

Fruit : ['Apple', 'Banana']
Vegetable : ['Carrot', 'Potato']

Methode 2: Verwenden Sie itertools.groupby()

Die Funktion

itertools.groupby() bietet eine weitere effiziente Möglichkeit, Elemente basierend auf bestimmten Kriterien zu gruppieren. Bei dieser Methode müssen die Eingabedaten nach dem zweiten Element sortiert werden.

Grammatik

   groups[key]

Hier iteriert die Funktion „groupby()“ im Modul „itertools“ das Objekt „groupby“. Diese Funktion gibt den Schlüssel und eine Reihe aufeinanderfolgender Elemente mit demselben Wert zurück. Erstellen Sie dann Schlüssel-Wert-Paare im Gruppenwörterbuch mit Schlüssel und Gruppe, wobei Schlüssel der eindeutige Wert und Wert die Liste der gruppierten Elemente ist.

Beispiel

Im folgenden Beispiel importieren wir die Funktion groupby() aus dem Modul itertools. Die Funktion groupby() erfordert, dass die Eingabedaten basierend auf dem Gruppierungsschlüssel sortiert werden. Daher verwenden wir die Funktion sorted() zum Sortieren der Datenliste und stellen eine Lambda-Funktion als Schlüsselargument bereit, um die Sortierung basierend auf dem zweiten Element (x[1]) anzugeben. Anschließend iterieren wir über die Ausgabe der Funktion „groupby()“, die einen Schlüssel und einen Iterator gruppierter Elemente zurückgibt. Für jede Gruppe extrahieren wir den Schlüssel und erstellen eine Liste des entsprechenden ersten Elements (item[0]).

from itertools import groupby

# Sample tuple list
data = [('Apple', 'Fruit'), ('Banana', 'Fruit'), ('Carrot', 'Vegetable'), ('Potato', 'Vegetable')]

# Sorting the data based on the second element
sorted_data = sorted(data, key=lambda x: x[1])

# Grouping elements using itertools.groupby()
grouped_data = {}
for key, group in groupby(sorted_data, key=lambda x: x[1]):
    grouped_data[key] = [item[0] for item in group]

# Printing the grouped data
for key, values in grouped_data.items():
    print(key, ":", values)

Ausgabe

Fruit : ['Apple', 'Banana']
Vegetable : ['Carrot', 'Potato']

Methode 3: Standarddict aus der Sammlung verwenden

Die Klasse defaultdict im Collections-Modul bietet eine praktische Möglichkeit, Elemente in einer Liste von Tupeln zu gruppieren. Es erstellt automatisch eine neue Liste als Standardwert für jeden Schlüssel und vereinfacht so den Gruppierungsprozess.

Grammatik

groups[item].append(item)

Hier verwendet die Syntax die Funktion defaultdict() aus dem Collections-Modul, um ein defaultdict-Objekt mit dem Namen groups zu initialisieren, dessen Standardwert eine leere Liste ist. Die zweite Codezeile verwendet den Schlüssel (Element), um auf die mit diesem Schlüssel verknüpfte Liste im Gruppenwörterbuch zuzugreifen, und hängt das Element an die Liste an.

Beispiel

Im folgenden Beispiel importieren wir die defaultdict-Klasse aus dem Collections-Modul. Beim Initialisieren des grouped_data-Wörterbuchs verwenden wir defaultdict(list), um den Standardwert auf eine leere Liste festzulegen. Anschließend durchlaufen wir die Datenliste und extrahieren das zweite Element als Schlüssel (Element[1]) und das erste Element als Wert (Element[0]). Mithilfe von defaultdict können wir den Wert direkt an die mit diesem Schlüssel verknüpfte Liste anhängen.

from collections import defaultdict

# Sample tuple list
data = [('Apple', 'Fruit'), ('Banana', 'Fruit'), ('Carrot', 'Vegetable'), ('Potato', 'Vegetable')]

# Grouping elements using defaultdict
grouped_data = defaultdict(list)
for item in data:
    grouped_data[item[1]].append(item[0])

# Printing the grouped data
for key, values in grouped_data.items():
    print(key, ":", values)

Ausgabe

Fruit : ['Apple', 'Banana']
Vegetable : ['Carrot', 'Potato']

Fazit

In diesem Artikel haben wir besprochen, wie man das erste und zweite Element in einer Liste von Tupeln mit verschiedenen Methoden in Python gruppiert. Durch die Verwendung von Wörterbüchern können wir gruppierte Daten einfach speichern und darauf zugreifen. Die Funktion itertools.groupby() bietet eine effiziente Lösung, erfordert jedoch eine Sortierung der Daten. Darüber hinaus vereinfacht die Klasse defaultdict den Gruppierungsprozess, indem sie automatisch Listen als Standardwerte für jeden Schlüssel erstellt.

Das obige ist der detaillierte Inhalt vonPython – Gruppiert das erste Element in der Liste der Tupel nach dem zweiten Element. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen