2012-11-05 7 views

Antwort

12

Wörterbücher haben keine Reihenfolge und haben daher weder Anfang noch Ende. Die Anzeigereihenfolge ist beliebig. Wenn Sie bestellen möchten, können Sie ein list von tuple s anstelle eines dict verwenden:

In [1]: mylist = [] 

In [2]: mylist.append(('key', 'value')) 

In [3]: mylist.insert(0, ('foo', 'bar')) 

Sie werden in der Lage sein, leicht in eine dict später zu konvertieren:

In [4]: dict(mylist) 
Out[4]: {'foo': 'bar', 'key': 'value'} 

Alternativ Einsatz a collections.OrderedDict wie von IamAlexAlright vorgeschlagen.

+0

thx, das funktioniert – user1801180

4

Nein. Überprüfen Sie das OrderedDict vom Collections-Modul.

5

A dict in Python ist nicht "bestellt" - in Python 2.7+ gibt es collections.OrderedDict, aber abgesehen davon, dass - nein ... Der entscheidende Punkt eines Wörterbuchs in Python ist effizient Key-> Nachschlagewert ... Die Reihenfolge Sie sehen sie in ist völlig willkürlich abhängig von der Hash-Algorithmus ...

+0

Es hängt vom Hash-Algorithmus und auch von der Reihenfolge ab, in der die Elemente eingefügt werden (wenn Kollisionen auftreten). – mgilson

+0

@mgilson Yup - völlig anders als eine C++ 'map' - die die Reihenfolge der Schlüssel - etc .. etc ... –

+1

Ich würde nicht über C++ wissen ... Meine erste Programmierklasse war C++ und ich * hasste * es . Ich dachte, Programmierung wäre das Dümmste, was es je gab. Ironischerweise wurde ich schließlich wie Programmierung, als ich begann, in C und dann Fortran danach zu programmieren (scheint, als wäre ich ziemlich zurück gegangen). Und Python, Fortan und C sind so ziemlich die einzigen Sprachen, die ich jetzt code - mit ein wenig Shell-Scripting hier und da, wenn nötig. – mgilson

Verwandte Themen