Seite 1 von 1

dict wird nicht vollständig initialisiert

Verfasst: Donnerstag 22. Januar 2015, 21:04
von pythonsux
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?

Re: dict wird nicht vollständig initialisiert

Verfasst: Donnerstag 22. Januar 2015, 21:10
von 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.

Re: dict wird nicht vollständig initialisiert

Verfasst: Donnerstag 22. Januar 2015, 21:15
von pythonsux
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.

Re: dict wird nicht vollständig initialisiert

Verfasst: Donnerstag 22. Januar 2015, 21:34
von 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.

Re: dict wird nicht vollständig initialisiert

Verfasst: Freitag 23. Januar 2015, 00:37
von pythonsux
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

Re: dict wird nicht vollständig initialisiert

Verfasst: Freitag 23. Januar 2015, 00:52
von BlackJack
@pythonsux: Eventuell ist `collections.OrderedDict` ja interessant.