Füllen eines Python-Wörterbuchs

8

Hallo ich bin ein Wörterbuch, wo jeder Schlüssel ist ein Kundenname und jeder Wert ist eine Liste von Tupeln, die von jedem Kunden gekauft werden, so: (Produkt, Menge). Zum Beispiel:

%Vor%

Ich beziehe das Wörterbuch basierend auf den Ergebnissen einer SQL-Abfrage. Kann ein neuer Python-Java-Programmierer den "pythonischen" Weg vorschlagen, dies zu tun? Jede Zeile der Abfrage enthält Kundenname, Produkt, Menge.

    
JCB 15.05.2012, 13:20
quelle

5 Antworten

10

Zuerst würde ich Listen statt Tupel als Wörterbucheinträge verwenden. Der Hauptunterschied besteht darin, dass Listen änderbar sind, Tupel dagegen nicht.

Ich denke defaultdict ist für dieses Problem gut geeignet:

%Vor%

Sie können Einträge wie folgt hinzufügen (natürlich würden Sie dies in einer Schleife tun):

%Vor%

Das Ergebnis ist:

%Vor%     
NPE 15.05.2012, 13:26
quelle
1

Ihre innere Struktur sollte eine Liste sein, kein Tupel, da die Struktur homogen ist.

%Vor%

Damit können Sie auch .append() für sie verwenden, und Sie können collections.defaultdict verwenden, um jeden Wert mit einer leeren Liste zur weiteren Vereinfachung zu beginnen.

    
Ignacio Vazquez-Abrams 15.05.2012 13:26
quelle
0

Ich hoffe, Sie haben eine Liste mit Listen aus Ihrer Datenbank, also z. B..

%Vor%

Dann können Sie es einfach tun.

%Vor%     
Jakob Bowyer 15.05.2012 13:23
quelle
0

Hier ist, was ich tun würde

%Vor%

Welche Drucke

%Vor%     
Nick Craig-Wood 15.05.2012 13:25
quelle
0

Sie können das integrierte Standarddict verwenden und es als Liste instanziieren und die gewünschten Felder anhängen dazu in deiner Schleife, zB. Wenn Sie die gesamte Zeile mit Ausnahme des ersten Elements möchten, können Sie your_defaultdict_instance[row[0]].append(row[1:]) verwenden, wodurch alles ordentlich aufgebaut wird.

    
Christian Witts 15.05.2012 13:27
quelle

Tags und Links