dict wird nicht vollständig initialisiert

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
pythonsux
User
Beiträge: 3
Registriert: Donnerstag 22. Januar 2015, 20:49

Hallo Forum,

ich erstelle mir mit einem dict eine quasi 2D Baumstruktur und übergebe das an ein Dropdownmenü um es mir dort anzeigen zulassen.
Dabei sind die Schlüssel die Kategorienamen und die values die entsprechenden Einträge.
Blöderweise scheint das Programm willkürlich zu entscheiden wieviel vom dict tatsächlich übergeben wird, bzw überhaupt in der zugehörigen Variable sitzt.

Code: Alles auswählen

classes = {"cat1": [1,2,3], "cat2": [4,5,6], "cat3": [7,8,9], "cat4":[10,11,12],"cat5":[13,14,15],"cat6":[16,17,18]}
print(classes)
GMDropdown(frame, classes, 1, useLabelStyle="labels", label="Race").grid(row=2, column=1)
#Ausgabe
#Durchlauf 1
cat4... cat5... cat6...
#Durchlauf 2
cat3... cat4... cat5... cat6...
Durchlauf #3
cat2... cat3... cat4... cat5... cat6...
Durchlauf #4
cat3... cat4... cat5... cat6...
Durchlauf #5
cat1... cat2... cat3... cat4... cat5... cat6...
Interessanterweise werden manchmal die ersten Einträge abgeschnitten. Die letzten (z.b. cat4, cat5, cat6) sind meistens immer da.
Wie kann ich das beheben?
BlackJack

@pythonsux: Das was Du beschreibst kann nicht an dem gezeigten Quelltext liegen. Der `print()`-Aufruf in Zeile 2 wird immer das komplette Wörterbuch ausgeben, mit allen sechs Schlüssel/Wert-Paaren darin.
pythonsux
User
Beiträge: 3
Registriert: Donnerstag 22. Januar 2015, 20:49

Woran kann es denn dann liegen?
Das Original-Dict ist ziemlich groß und ich habe es über mehrere Zeilen erstellt.

Code: Alles auswählen

classes = {"cat1": [1,2,3], 
"cat2": [4,5,6], 
"cat3": [7,8,9], 
"cat4":[10,11,12],
"cat5":[13,14,15],
"cat6":[16,17,18]}
print(classes)
So wäre das eher richtig.
BlackJack

@pythonsux: Das ändert überhaupt nichts. Fehlen da wirklich Einträge oder sind die vielleicht alle vorhanden aber nicht in der Reihenfolge die Du erwartest? Die Reihenfolge von Elementen in einem `dict` hängt nämlich vom Hashwert der Schlüssel ab, sieht also an und für sich erst einmal zufällig aus.
pythonsux
User
Beiträge: 3
Registriert: Donnerstag 22. Januar 2015, 20:49

Oh! Okay, es sind tatsächlich alle da, das ist mir in dem langen gewusel nicht aufgefallen.
na gut, dann muss ich halt noch eine Sortierreihenfolge mit rüber schmeißen.
Danke
BlackJack

@pythonsux: Eventuell ist `collections.OrderedDict` ja interessant.
Antworten