# Python: Sortieren von Dictionaries



## Jens K (4. Januar 2010)

hallo,

ich hab ein Dictionary z.B:

```
dict = { "a"=1, "b"=5, "c"=3}
```

Ich möchte das jetzt gerne sortiert haben, nämlich nicht nach den Schlüsseln sonders nach den Werten. Also so dass ich zum Schluss


```
dict = { "a"=1, "c"=3, "b"=5}
```

habe.


----------



## Bexx (4. Januar 2010)

Hallo,

kleiner nett gemeinter Tipp von mir, du lernst wesentlich mehr, wenn du es dir selber erarbeitest bzw. raussuchst.
 is your friend...  

anyway, hier deine Funktion:


```
def sortedDictValues1(adict):
    items = adict.items()
    items.sort()
    return [value for key, value in items]
```


----------



## Jens K (5. Januar 2010)

hallo,

ich erhalte dann aber eine Liste mit den values, ich möchte aber wieder mein dictionary haben


----------



## deepthroat (8. Januar 2010)

Hi.





Jens K hat gesagt.:


> hallo,
> 
> ich erhalte dann aber eine Liste mit den values, ich möchte aber wieder mein dictionary haben


Ein Dictionary ist _immer_ nach den Keys sortiert. Das ist ja gerade der Sinn eines "Wörterbuches".

\edit: Ich find das jetzt grad etwas lustig.  Man stelle sich vor jemand geht in einen Buchladen und möchte ein Wörterbuch, das nicht nach den Stichworten sortiert ist, sondern nach den Definitionen aber trotzdem die Stichworte zuerst darstellt... ^^

Gruß

PS: @Bexx: Deine Funktion arbeitet nicht richtig. Es werden ja die (key, value) Paare primär nach dem key sortiert - und das war schließlich von Anfang an so.

PPS: @Jens K: Ich weiß ja nicht wozu du das haben wolltest, aber evtl. nützt dir ein Dictionary welches als Schlüssel die Werte des ersten Dictionaries hat? Übrigens "dict" ist bereits der Name des Typs "dict" von Python -- keine gute Idee dies als Variablennamen zu verwenden. 

```
a_dict = { "a"=1, "b"=5, "c"=3}

another_dict = dict((v, k) for (k, v) in a_dict.items())
```


----------



## Thomas Darimont (18. März 2010)

Hallo,

eine weitere Möglichkeit wäre:

```
>>> d = { "a":1, "b":5, "c":3}
>>> d
{'a': 1, 'c': 3, 'b': 5}
>>> for item in sorted(d.items(),key=lambda x: x[1]):
...    print item
...
('a', 1)
('c', 3)
('b', 5)
```

Gruß Tom


----------



## onlyfoo-na (28. März 2010)

Ein Dictionary ist erstmal überhaupt nicht nach so einem Kriterium sortiert


```
>>> dict(  pupsgesicht=22, hallowelt=12, ichbinmuede = 243 )
{'ichbinmuede': 243, 'hallowelt': 12, 'pupsgesicht': 22}
```


----------

