[Python-de] Dictionary sortieren???

Martin v. Löwis martin at v.loewis.de
Don Mai 29 21:00:04 EDT 2003


hcz at hczim.de (Heike C. Zimmerer) writes:

> > 4. Was macht cmp für nicht-numerische Typen?
> >    Antwort A: Das ist keine Frage zur Semantik von sort.
> >    Antwort B: Das hängt stark von der Python-Version ab.
> >      Falls es sich um Klasseninstanzen handelt, die cmp
> >      nicht überdefinieren, so ist cmp(a,b) == cmp(id(a),id(b))
> 
> Danke.  Das war meine Frage.

Nicht ganz: Deine Frage war "Was macht cmp für Dictionaries?"

Diese Frage hatte ich nicht beantwortet, da ich mich lediglich über
Klasseninstanzen ausgelassen hatte. Beispielsweise sortieren sich die
meisten Folgen (Strings, Unicode-Strings, Tupel, Listen)
lexikographisch, das hatte ich auch nicht erwähnt.

Für Dictionaries habe ich eben Achim den genauen Algorithmus
beschrieben.

> Da der Vergleich der ids in einem realen Programm keine nutzbaren
> Angaben über die enthaltenen Daten enthält, weiß ich jetzt, dass ein
> solcher Sort mir in der Anwendung nichts bringt und dass ich mich
> nicht weiter drum kümmern muss.

Für Dictionaries werden durchaus die Werte verglichen und nicht die
ids. Ob der ausgeführte Vergleich allerdings "in der Anwendung was
bringt", hängt natürlich von der Anwendung ab.

Ciao,
Martin