Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich Daten in Python nach Schlüsseln gruppieren und das Ergebnis in einem bestimmten Format zurückgeben, um Daten mit sich wiederholenden Schlüsseln effektiv zu verarbeiten und die Reihenfolge aufrechtzuerhalten?

Wie kann ich Daten in Python nach Schlüsseln gruppieren und das Ergebnis in einem bestimmten Format zurückgeben, um Daten mit sich wiederholenden Schlüsseln effektiv zu verarbeiten und die Reihenfolge aufrechtzuerhalten?

Linda Hamilton
Linda HamiltonOriginal
2024-10-28 14:08:30847Durchsuche

How can I group data by keys in Python and return the result in a specific format, effectively handling data with repeating keys and maintaining order?

Python-Gruppierung von Daten nach Schlüsseln

Diese Anleitung befasst sich mit der Aufgabe, Daten nach bestimmten Schlüsseln in Python zu gruppieren. Unser Ziel ist es, eine effiziente und geordnete Gruppierungslösung für den gegebenen Datensatz zu erreichen.

Problemstellung

Betrachten Sie den folgenden Datensatz, der als Schlüssel-Wert-Paare dargestellt wird:

<code class="python">input = [
          ('11013331', 'KAT'), 
          ('9085267',  'NOT'), 
          ('5238761',  'ETH'), 
          ('5349618',  'ETH'), 
          ('11788544', 'NOT'), 
          ('962142',   'ETH'), 
          ('7795297',  'ETH'), 
          ('7341464',  'ETH'), 
          ('9843236',  'KAT'), 
          ('5594916',  'ETH'), 
          ('1550003',  'ETH')
        ]</code>

Das Ziel besteht darin, diese Datenpaare nach ihren entsprechenden Schlüsseln (dem zweiten Element in jedem Tupel) zu gruppieren und das gruppierte Ergebnis im folgenden Format zurückzugeben:

<code class="python">result = [ 
           { 
             'type': 'KAT', 
             'items': ['11013331', '9843236'] 
           },
           {
             'type': 'NOT', 
             'items': ['9085267', '11788544'] 
           },
           {
             'type': 'ETH', 
             'items': ['5238761', '962142', '7795297', '7341464', '5594916', '1550003'] 
           }
         ] </code>

Lösung

Im Folgenden finden Sie die Schritte zum effizienten Gruppieren der Daten:

  1. Erstellen Sie ein Wörterbuch: Verwenden Sie ein Standarddict, um die Elemente für jeden Schlüssel zu speichern. Initialisieren Sie das Wörterbuch mit einer Standardfabrik, die für jeden neuen Schlüssel eine leere Liste erstellt.

    <code class="python">from collections import defaultdict
    
    res = defaultdict(list)
    for v, k in input:
     res[k].append(v)</code>
  2. Konvertieren Sie das Wörterbuch in das erwartete Format:Um das Finale zu generieren Konvertieren Sie als Ergebnis das Wörterbuch in eine Liste von Wörterbüchern mit der gewünschten Struktur.

    <code class="python">result = [{'type': k, 'items': v} for k, v in res.items()]</code>

Optionale Hinweise:

  • Vorher In Python 3.7 haben Wörterbücher die Einfügereihenfolge nicht beibehalten. Um die ursprüngliche Reihenfolge der Schlüssel beizubehalten, sollten Sie stattdessen die Verwendung eines OrderedDict in Betracht ziehen.
  • Alternativ kann auch die Funktion itertools.groupby zum Gruppieren verwendet werden, allerdings muss die Eingabe vorher sortiert werden.
  • Bei großen Datensätzen kann die Verwendung einer Datenbank mit Gruppierungsfunktion effizienter sein als die hier vorgestellten In-Memory-Lösungen.

Das obige ist der detaillierte Inhalt vonWie kann ich Daten in Python nach Schlüsseln gruppieren und das Ergebnis in einem bestimmten Format zurückgeben, um Daten mit sich wiederholenden Schlüsseln effektiv zu verarbeiten und die Reihenfolge aufrechtzuerhalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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