Python: dict nicht sortieren

  • Ersteller omg_ein_anfänge
  • Erstellt am
O

omg_ein_anfänge

Grünschnabel
Code:
Code:
fruits = {
    'oranges':4
    'banana':10,
    'apple':'2,
    }

for index, item in fruits.items():
    print index , ' -> ' , item

Ausgabe:
Code:
apple -> 2
banana -> 10
oranges -> 4

Ja, also das funktioniert..ich habe nur das Problem, dass Python mir die einzelnen Eingaben im Dictionary alphabetisch sortiert ausgibt. Gibt es auch eine möglichkeit, das zu unterbinden (also das nicht "apples" sondern in dem fall "oranges" zuerst ausgegeben wird? Eben entsprechend der Reihung meiner Eingabe nach?)
 
die Sortierung erfolgt iirc entsprechend der internen Hash-Repräsentation, nicht alphabetisch. Probier dein Beispiel mit
Code:
{'foo' : 1, 'bar' : 2, 'flu' : 3 }

dicts haben generell keine Ordnung, ergo wird die Reihenfolge der Eingabe nirgendwo gespeichert.
 
Gibt es denn dann irgendeine möglichkeit, eine Reihenfolge festzulegen? Oder eventuell eine Ausweichmöglichkeit, die so funktioniert, wie ich es mir wünschen würde?
 
Hi,

wie foobarflu ja schon erklaerte, macht ein dict keinerlei Garantien ueber die Reihenfolge der enthaltenen Daten. Das wuerde ja auch dem Sinn eines dicts widersprechen. Du benutzt einen Hash, wenn du moeglichst schnellen Zugriff auf willkuerliche Daten ueber einen selbst definierten Index haben willst. Die Reihenfolge ist irrelevant.

Wenn dir die Reihenfolge wichtig ist, musst du eine Liste nehmen.

Solltest du wirklich diese beiden Konzepte in eine Datenstruktur packen wollen, kannst du dir ja einfach eine Klasse dafuer schreiben. Mir ist jedenfalls auch keine vorgefertigte Python Datenstruktur dafuer bekannt.

mfg,
bytepool
 

Ähnliche Themen

Officejet schreibt nicht auf Samba-Freigabe

C++ Klausur durchgefallen

Server-Monitoring mit RRDTool

Zurück
Oben