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.
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:
Sie können Einträge wie folgt hinzufügen (natürlich würden Sie dies in einer Schleife tun):
%Vor%Das Ergebnis ist:
%Vor%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.
Ich hoffe, Sie haben eine Liste mit Listen aus Ihrer Datenbank, also z. B..
%Vor%Dann können Sie es einfach tun.
%Vor% 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.
Tags und Links python dictionary