
Hallo Liste! habe eine Liste die Dictionaris enthält! a = [{'vorname': 'christian', 'name': 'klinger'}{'vorname':'alfons', 'name':'mustermann'}] Ich möchte nun in der Liste nach dem Key 'name' sortieren. mit einem a.sort() sortiert er nur nach vorname (glaube ich)! Hat jemand eine Idee wie man sowas machen kann??? mfg christian _______________________________________________ Python-de maillist - Python-de@python.net http://python.net/mailman/listinfo/python-de

du kannst sort() eine eigene sortierfunktion übergeben, in der du ein abweichenes sortierverhalten implementieren kann. in der python doku ist ein beispiel. -aj --On Mittwoch, 28. Mai 2003 16:21 Uhr +0200 Christian Klinger <christian.klinger@econtec.de> wrote:
Hallo Liste!
habe eine Liste die Dictionaris enthält!
a = [{'vorname': 'christian', 'name': 'klinger'}{'vorname':'alfons', 'name':'mustermann'}]
Ich möchte nun in der Liste nach dem Key 'name' sortieren.
mit einem a.sort() sortiert er nur nach vorname (glaube ich)!
Hat jemand eine Idee wie man sowas machen kann???
mfg christian
_______________________________________________ Python-de maillist - Python-de@python.net http://python.net/mailman/listinfo/python-de

habs selber gefunden: def sortDictBy(list, key): nlist = map(lambda x, key=key: (x[key], x), list) nlist.sort() return map(lambda (key, x): x, nlist) keine Ahung was das macht aber es funktioniert! danke & mfg christian ----- Original Message ----- From: Christian Klinger To: python-de@python.net Sent: Wednesday, May 28, 2003 4:21 PM Subject: [Python-de] Dictionary sortieren??? Hallo Liste! habe eine Liste die Dictionaris enthält! a = [{'vorname': 'christian', 'name': 'klinger'}{'vorname':'alfons', 'name':'mustermann'}] Ich möchte nun in der Liste nach dem Key 'name' sortieren. mit einem a.sort() sortiert er nur nach vorname (glaube ich)! Hat jemand eine Idee wie man sowas machen kann??? mfg christian ------------------------------------------------------------------------------ _______________________________________________ Python-de maillist - Python-de@python.net http://python.net/mailman/listinfo/python-de _______________________________________________ Python-de maillist - Python-de@python.net http://python.net/mailman/listinfo/python-de

Betreff: [mailinglist] Re: [Python-de] Dictionary sortieren???
habs selber gefunden:
def sortDictBy(list, key): nlist = map(lambda x, key=key: (x[key], x), list) nlist.sort() return map(lambda (key, x): x, nlist)
keine Ahung was das macht aber es funktioniert!
ist gar nicht so schwer. schritt für schritt: lambda x, key=key: (x[key],x) definiert eine funktion mit parametern x,key die (x[key],x) zurückliefert. ist das gleiche wie def fun(x,key=key): return (x[key],x) nur dass lambda eine temporäre funktion ohne namen erzeugt. map() wendet diese funktion auf die ganze liste an, sprich baut aus [ dict1, dict2, ... ] die liste [ (key1, dict1), (key2, dict2), ... ] analog zu meiner geposteten lösung mit list comprehension. in deinem beispiel sind dann die keys die vornamen. sort() sortiert jetzt diese tupel lexikographisch (sprich zuerst nach den ersten eintrag). und das letzte map macht aus [ ( key7, dict7), (key3, dict3)... ] wieder [ dict7, dict3, ...] alles klar ? gruss, uwe _______________________________________________ Python-de maillist - Python-de@python.net http://python.net/mailman/listinfo/python-de

a.sort(lambda x,y: cmp(x['name'],y['name'])) Gibt's in dieser Liste eigentlich 'ne Richtlinie von wegen HTML Mails? Ich wäre für 'normalen' Text. Gruß, Achim _______________________________________________ Python-de maillist - Python-de@python.net http://python.net/mailman/listinfo/python-de

hallo, lösung ist das sogenannte decorate-sort-undecorate pattern: tmplist = [ ( d['vorname'], d) for d in a ] tmplist.sort() reslist = [ d for ( k,d ) in tmplist ] müsste so funktionieren.. ist universell benutzbar: zuerst baut man eine hilfsliste aus tupeln, wobei der sortierschlüssel zu beginn steht, und dann muss man die objekte am ende des tupels mitschleppen. sort auf der liste und dann wieder die objekte extrahieren. hat oft auch ne recht gute performance, erster und letzter schritt sind O(n), fallen also kaum ins gewicht, und sort dominiert mit O(n log n), mit kleinen konstanten, da in c implementiert. gruss, uwe. -----Ursprüngliche Nachricht----- Von: python-de-bounces@python.net [mailto:python-de-bounces@python.net]Im Auftrag von Christian Klinger Gesendet: Mittwoch, 28. Mai 2003 16:21 An: python-de@python.net Betreff: [mailinglist] [Python-de] Dictionary sortieren??? Hallo Liste! habe eine Liste die Dictionaris enthält! a = [{'vorname': 'christian', 'name': 'klinger'}{'vorname':'alfons', 'name':'mustermann'}] Ich möchte nun in der Liste nach dem Key 'name' sortieren. mit einem a.sort() sortiert er nur nach vorname (glaube ich)! Hat jemand eine Idee wie man sowas machen kann??? mfg christian _______________________________________________ Python-de maillist - Python-de@python.net http://python.net/mailman/listinfo/python-de

Christian Klinger:
Hat jemand eine Idee wie man sowas machen kann???
Ja, schau mal unter Denksportaufgabe neulich auf dieser Liste! Dinu -- Dinu C. Gherman ...................................................................... "If something is repeated over and over as obvious, the chances are that it is obviously false." (Noam Chomsky) _______________________________________________ Python-de maillist - Python-de@python.net http://python.net/mailman/listinfo/python-de

hallo, nochwas: man könnte natürlich dem sort befehl eine vergleichsfunktion mitgeben, die nur die vornamen vergleicht, das bremst aber im gegensatz zum decorate-sort-undecorate pattern die sort() routine schön aus: pro vergleich muss die c-implementierung von sort wieder in den python-interpreter zurück um die vergleichsfunktion auszuführen... das führt zu einem grossen overhead. gruss, uwe. -----Ursprüngliche Nachricht----- Von: python-de-bounces@python.net [mailto:python-de-bounces@python.net]Im Auftrag von Christian Klinger Gesendet: Mittwoch, 28. Mai 2003 16:21 An: python-de@python.net Betreff: [mailinglist] [Python-de] Dictionary sortieren??? Hallo Liste! habe eine Liste die Dictionaris enthält! a = [{'vorname': 'christian', 'name': 'klinger'}{'vorname':'alfons', 'name':'mustermann'}] Ich möchte nun in der Liste nach dem Key 'name' sortieren. mit einem a.sort() sortiert er nur nach vorname (glaube ich)! Hat jemand eine Idee wie man sowas machen kann??? mfg christian _______________________________________________ Python-de maillist - Python-de@python.net http://python.net/mailman/listinfo/python-de

Hallo Uwe, Uwe Schmitt wrote:
nochwas: man könnte natürlich dem sort befehl eine vergleichsfunktion mitgeben, die nur die vornamen vergleicht, das bremst aber im gegensatz zum decorate-sort-undecorate pattern die sort() routine schön aus: pro vergleich muss die c-implementierung von sort wieder in den python-interpreter zurück um die vergleichsfunktion auszuführen... das führt zu einem grossen overhead.
ich denke, bis man festgestellt hat, dass das Programm zu langsam läuft, sollte man nicht optimieren. Ich mag Kent Becks(?) Motto "Make it work. Make it right. Make it fast." Ohne Profiling würde ich immer die - eventuell - langsamere, aber besser verständliche, Lösung der - eventuell - schnelleren, aber unübersichtlichen, Lösung vorziehen. Wenn es die lesbarere Lösung sogar die schnellere ist, umso besser. Siehe auch http://c2.com/cgi/wiki?PrematureOptimization http://c2.com/cgi/wiki?OptimizeLater http://www.martinfowler.com/ieeeSoftware/yetOptimization.pdf Viele Grüße Stefan _______________________________________________ Python-de maillist - Python-de@python.net http://python.net/mailman/listinfo/python-de

ich denke, bis man festgestellt hat, dass das Programm zu langsam läuft, sollte man nicht optimieren. Ich mag Kent Becks(?) Motto "Make it work. Make it right. Make it fast."
Ohne Profiling würde ich immer die - eventuell - langsamere, aber besser verständliche, Lösung der - eventuell - schnelleren, aber unübersichtlichen, Lösung vorziehen. Wenn es die lesbarere Lösung sogar die schnellere ist, umso besser.
Würde ich im Prinzip auch so sehen, wobei ich Uwe in soweit Recht geben muß, daß es sich um ein in Python bekanntest Idiom handel. Er hat ja keinen komplizierten Algorithmus durch kryptische Anweisungen verkompliziert. Die Verwendung von bekannten Patterns, die bestimmte Probleme effizient lösen, hat sicher nichts mit verfrühter, unnötiger Optimierung zu tun. In jedem komplizierteren Fall würde ich dir aber voll und ganz Recht geben. Gruß, Achim _______________________________________________ Python-de maillist - Python-de@python.net http://python.net/mailman/listinfo/python-de

Hallo Uwe,
Uwe Schmitt wrote:
nochwas: man könnte natürlich dem sort befehl eine vergleichsfunktion mitgeben, die nur die vornamen vergleicht, das bremst aber im gegensatz zum decorate-sort-undecorate pattern die sort() routine schön aus: pro vergleich muss die c-implementierung von sort wieder in den python-interpreter zurück um die vergleichsfunktion auszuführen... das führt zu einem grossen overhead.
ich denke, bis man festgestellt hat, dass das Programm zu langsam läuft, sollte man nicht optimieren. Ich mag Kent Becks(?) Motto "Make it work. Make it right. Make it fast."
Ohne Profiling würde ich immer die - eventuell - langsamere, aber besser verständliche, Lösung der - eventuell - schnelleren, aber unübersichtlichen, Lösung vorziehen. Wenn es die lesbarere Lösung sogar die schnellere ist, umso besser.
Hallo, prinzipiell gebe ich Dir recht, ich mag Python auch deswegen, weil man Ideen oft elegant und schnell umsetzen kann, die spätere Laufzeit ist da nicht von primärem Interesse. Trotzdem finde ich es schon erstrebenswert sich in Python soweit auszukennen, daß man beim Tippen schon in etwa weiß was performant ist und was nicht... Klar kann man da nicht alles wissen, von Guido v.R. gibt es ein Essay wo er auch verschiedene Listenoperationen auf Laufzeit vergleicht und so wie ich das aufgefasst habe, war er teilweise über Laufzeitunterschiede auch überrascht... das Dokument muss auf python.org noch rumliegen... Aber alleine die Diskussion hier rechtfertigt schon die verschiedenen Lösungsansätze.... Wer an solchen "Feinheiten" interessiert ist, soll unbedingt das "Python Cookbook" lesen.... ein sehr gutes Buch... Gruß, Uwe _______________________________________________ Python-de maillist - Python-de@python.net http://python.net/mailman/listinfo/python-de

"Christian Klinger" <christian.klinger@econtec.de> writes:
Hallo Liste!
habe eine Liste die Dictionaris enthält!
Kann in den besten Familien passieren.
a = [{'vorname': 'christian', 'name': 'klinger'}{'vorname':'alfons', 'name':'mustermann'}]
Ich möchte nun in der Liste nach dem Key 'name' sortieren.
Wie so häufig: decorate, sort, undecorate: dekoriert = [ [ d["name"], d] for d in a] dekoriert.sort() a = [ l[1] for l in dekoriert]
mit einem a.sort() sortiert er nur nach vorname (glaube ich)!
Glaubst Du. Mich wundert, dass ein sort überhaupt geht. Die Reihenfolge im Dictionary ist schließlich willkürlich, unabhängig von der Eingabe und nirgends garantiert. Weiß jemand, was ein sort über Dictionaries sortiert (ausser ihrer Länge)? Übrigens: Wärst Du so nett und würdest auf den ganzen HTML-Bloat verzichten? Danke. Gruß, Heike _______________________________________________ Python-de maillist - Python-de@python.net http://python.net/mailman/listinfo/python-de

Hallo Heike, Heike C. Zimmerer wrote:
mit einem a.sort() sortiert er nur nach vorname (glaube ich)!
Glaubst Du. Mich wundert, dass ein sort überhaupt geht. Die Reihenfolge im Dictionary ist schließlich willkürlich, unabhängig von der Eingabe und nirgends garantiert. Weiß jemand, was ein sort über Dictionaries sortiert (ausser ihrer Länge)?
ich denke, dass nur einfach der Betreff von Christian Klinger etwas unglücklich formuliert war. Es soll die Liste (namens a), die Dictionaries enthält, sortiert werden, nicht die Dictionaries "in sich". Viele Grüße Stefan _______________________________________________ Python-de maillist - Python-de@python.net http://python.net/mailman/listinfo/python-de

Stefan Schwarzer <sschwarzer@sschwarzer.net> writes:
Heike C. Zimmerer wrote:
Die Reihenfolge im Dictionary ist schließlich willkürlich, unabhängig von der Eingabe und nirgends garantiert. Weiß jemand, was ein sort über Dictionaries sortiert (ausser ihrer Länge)?
ich denke, dass nur einfach der Betreff von Christian Klinger etwas unglücklich formuliert war. Es soll die Liste (namens a), die Dictionaries enthält, sortiert werden, nicht die Dictionaries "in sich".
Ja, das habe ich schon so verstanden, wie Du es sagst. Ein Dictionary hat schließlich gar keine sort-Methode, eine Sortierung "in sich" ist nicht möglich und ergibt auch keinen Sinn. Meine Frage war, nach was sortiert wird, wenn eine Liste wie in seinem Fall nur aus Dictionaries besteht. Nicht dass ich das vorhätte - aber der OP wollte das und meine Dokumentation schweigt sich dazu aus. Vielleicht lässt sich ja ein Sinn dahinter entdecken. Gruß, Heike _______________________________________________ Python-de maillist - Python-de@python.net http://python.net/mailman/listinfo/python-de

Heike C. Zimmerer:
Meine Frage war, nach was sortiert wird, wenn eine Liste wie in seinem Fall nur aus Dictionaries besteht. Nicht dass ich das vorhätte - aber der OP wollte das und meine Dokumentation schweigt sich dazu aus. Vielleicht lässt sich ja ein Sinn dahinter entdecken.
Wie schon einmal gesagt, ich hatte vor einer Weile eine Denksport- aufgabe unter dem Titel "Beschraenktes Sortieren" gestellt. Da kam das auch vor. Es macht sehr viel Sinn, Listen von Dictionaries nach einzelnen Schluesselworten zu sortieren. Weil das kollektive Gedaechtnis hier offenbar arg kurz ist, hier nochmal die kuerzeste Loesung von Rene Liebscher, die auch noch andere huebsche Eigenschaften hat: def sort(seq, indizes): seq.sort(lambda a,b,indizes=indizes:reduce(lambda x,y:x or y,[cmp(a[i],b[i]) for i in indizes])) return seq a = [{'vorname': 'christian', 'name': 'klinger'}, {'vorname':'alfons', 'name':'mustermann'}]
sort(a, ['vorname']) [{'vorname': 'alfons', 'name': 'mustermann'}, {'vorname': 'christian', 'name': 'klinger'}]
Gruss, Dinu -- Dinu C. Gherman ...................................................................... "It was wonderful to find America, but it would have been more wonder- ful to miss it." (Mark Twain) _______________________________________________ Python-de maillist - Python-de@python.net http://python.net/mailman/listinfo/python-de

Dinu Gherman <gherman@darwin.in-berlin.de> writes:
Heike C. Zimmerer:
Meine Frage war, nach was sortiert wird, wenn eine Liste wie in seinem Fall nur aus Dictionaries besteht. Nicht dass ich das vorhätte - aber der OP wollte das und meine Dokumentation schweigt sich dazu aus. Vielleicht lässt sich ja ein Sinn dahinter entdecken.
Wie schon einmal gesagt, ich hatte vor einer Weile eine Denksport- aufgabe unter dem Titel "Beschraenktes Sortieren" gestellt. Da kam das auch vor. Es macht sehr viel Sinn, Listen von Dictionaries nach einzelnen Schluesselworten zu sortieren.
Weil das kollektive Gedaechtnis hier offenbar arg kurz ist, hier nochmal die kuerzeste Loesung von Rene Liebscher, die auch noch andere huebsche Eigenschaften hat:
Hmm. Das Gedächtnis scheint wirklich kurz zu sein, aber nicht das kollektive... Meine Frage steht oben (was passiert, wenn eine Liste von Dictionaries sortiert wird). Ich wollte explizit nicht wissen, was passiert, wenn man nach Schlüsselworten aus den Dictionaries sortiert. Das war ja der Witz an der Frage, dass die Dictionaries selbst sortiert werden sollen. Gruß, Heike _______________________________________________ Python-de maillist - Python-de@python.net http://python.net/mailman/listinfo/python-de

der OP wollte das und meine Dokumentation schweigt sich dazu aus.
Ich musste leider auch feststellen, das die Python Docu nicht so gut ist, wie der erste Eindruck glauben lässt. Was sagt den Dein Python-Buch von O'Reilly (welches war's noch?) dazu? Etwa auch nix?
Vielleicht lässt sich ja ein Sinn dahinter entdecken. Naja, für Python ist das einfach eine Liste und die kann man nun mal sortieren - welchen Sinn das für den OP macht, muss er wissen.
Leider steht in der Doku nicht, wie Sort funktioniert, wenn die Liste nicht trivial ist. Man kann's natürlich durch ausprobieren erforschen, aber welchen Wert hat das, kann man sich darauf verlassen, das die nächste Python-Version immer noch genauso (undokumentiert) sortiert? -- Mit freundlichen Grüßen Klaus Meyer :-) _______________________________________________ Python-de maillist - Python-de@python.net http://python.net/mailman/listinfo/python-de

Klaus Meyer <km-news1@onlinehome.de> writes:
Leider steht in der Doku nicht, wie Sort funktioniert, wenn die Liste nicht trivial ist. Man kann's natürlich durch ausprobieren erforschen, aber welchen Wert hat das, kann man sich darauf verlassen, das die nächste Python-Version immer noch genauso (undokumentiert) sortiert?
Nun ja. Es gibt die offensichtlichen Fakten und die weniger offensichtlichen. Zu den offensichtlichen gehört, dass "offensichtlich" cmp verwendet wird, wenn keine cmpfunc angegeben ist, siehe http://www.python.org/doc/current/lib/typesseq-mutable.html "Offensichtlich" ist ebenfalls, dass das Sortieren beendet wird, wenn für alle Indizes n gilt: cmpfunc(L[n], L[n+1]) <= 0 Zu den weniger offensichtlichen Fragen gehören diese: 1. Welche Ordnung wird gefunden, wenn es Listenelemente gibt, für die cmpfunc(L[n], L[n+1]) == 0? Antwort: Hängt von der Python-Version ab. Wenigstens Python 2.3 (evtl. auch schon 2.2) sortiert stabil. 2. Welche Komplexität hat der Sortieralgorithmus? Antwort: Das ist absichtlich undokumentiert und kann sich von Version zu Version ändern. 3. Was passiert, wenn cmpfunc keine vollständige Ordnung auf den Elementen definiert? Antwort: Undefiniert. 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)) Ciao, Martin _______________________________________________ Python-de maillist - Python-de@python.net http://python.net/mailman/listinfo/python-de

[...]
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))
Bis hier hin war mir das alles klar. Nur frag' ich mich, ob dictionary __cmp__ nicht vieleicht implementiert? Ein dir({}) liefert in jedem Fall eine Funktion __cmp__ zurück, die aber auch geerbt sein könnte. In der Doku kann ich dazu nichts finden, von daher würde ich mal voraussetzen, daß es sich um ein undefiniertes Detail handelt, das sich von Version zu Version ändern darf. Oder? Gruß, Achim _______________________________________________ Python-de maillist - Python-de@python.net http://python.net/mailman/listinfo/python-de

"Achim Domma \(ProCoders\)" <domma@procoders.net> writes:
Bis hier hin war mir das alles klar. Nur frag' ich mich, ob dictionary __cmp__ nicht vieleicht implementiert?
Tut es. Der tp_compare-Code für Dictionaries a,b geht so: 1. Sind die Längen verschieden? Wenn ja: cmp(len(a), len(b)) 2. Wenn nicht: Finde den kleinsten Schlüssel ka in a, so dass b[ka] nicht existiert oder verschieden ist von a[ka] 3. Wenn kein solches ka existiert: die dictionaries sind gleich, Ergebnis ist 0 4. Finde den kleinsten Schlüssel kb in b, so dass a[kb] nicht existiert oder verschieden ist von ka. 5. Sind ka und kb verschieden? Wenn ja: cmp(ka, kb) 6. Wenn nicht: cmp(a[ka], a[kb]) Dieser Algorithmus hat u.a. folgende Eigenschaften 1. Gleiche Dictionaries (gleiche Schlüssel, gleiche Werte) liefern bei cmp 0. 2. Dictionaries werden primär nach Größe sortiert 3. Gleich große Dictionaries so verglichen, als ob die Aktionen aseq = a.items() aseq.sort() bseq = b.items() bseq.sort() return cmp(aseq, bseq) ausgeführt würden (zumindest ungefähr: verändert sich das Dictionary in Folge des Vergleichs, so weicht die Semantik von dieser hier ab) Dieser Algorithmus ist nicht dokumentiert. Trotzdem ist er schon seit etlichen Versionen in Verwendung, und wird sicher auch noch länger in Verwendung bleiben. Ciao, Martin _______________________________________________ Python-de maillist - Python-de@python.net http://python.net/mailman/listinfo/python-de

martin@v.loewis.de (Martin v. =?iso-8859-15?q?L=F6wis?=) 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. 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. Gruß, Hei *umsonst überlegt, ob was dahinterstecken kann* ke _______________________________________________ Python-de maillist - Python-de@python.net http://python.net/mailman/listinfo/python-de

hcz@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 _______________________________________________ Python-de maillist - Python-de@python.net http://python.net/mailman/listinfo/python-de

martin@v.loewis.de (Martin v. =?iso-8859-15?q?L=F6wis?=) writes:
Für Dictionaries habe ich eben Achim den genauen Algorithmus beschrieben.
Ja. Danke für die Mühe. Ich werde es nochmal lesen müssen :-). | 3. Gleich große Dictionaries so verglichen, als ob die | Aktionen | | aseq = a.items() | aseq.sort() | bseq = b.items() | bseq.sort() | return cmp(aseq, bseq) Ich denke, ich hab's kapiert.
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.
Ja. Und Dictionaries sind so grundlegend und häufig, dass sich ein "was passiert, wenn..." schon lohnt, um das beurteilen zu können. Gruß, Heike _______________________________________________ Python-de maillist - Python-de@python.net http://python.net/mailman/listinfo/python-de

Klaus Meyer <km-news1@onlinehome.de> writes:
Was sagt den Dein Python-Buch von O'Reilly (welches war's noch?) dazu? Etwa auch nix?
Python in a Nutshell. Da habe ich natürlich nachgeschaut. Unter den Methoden für Listen steht nur: l.sort([f]): Sort in.place the items of l, comparing items by f; if f is omitted, cmp is used as the comparison function Was cmp macht, wenn man ihm Dictionaries verfüttert, steht nirgends (oder habe ich nicht gefunden). Deshalb meine Frage, was bei einem solchen sort rauskommt. Aber Martin hat sie ja inzwischen beantwortet. Gruß, Heike _______________________________________________ Python-de maillist - Python-de@python.net http://python.net/mailman/listinfo/python-de

Hallo Christian, Sortierhinweise hast Du ja genug erhalten! Trotzdem auch noch mein Senf dazu, aber unter etwas anderem Gesichtspunkt:
habe eine Liste die Dictionaris enthält!
a = [{'vorname': 'christian', 'name': 'klinger'},{'vorname':'alfons', 'name':'mustermann'}] (ein Komma von mir eingefügt, da sonst syntaktisch falsch)
Ich finde Deine Datenstruktur etwas unglücklich, wobei des natürlich an Deinem gekürzten Beispiel liegen kann oder weil ich etwas übersehen habe. Du hast ein Liste, in der jeder Eintrag ein Dictionary mit nur *zwei* Einträgen ist. Dictionary ist der mächtigste Datentyp in Python und daher benötigt er mehr Platz und mehr Laufzeit, als zB eine Liste. Ausserdem kannst Du bei nur 2 Einträgen pro Dictionary dessen Möglichkeiten eigentlich nicht wirklich ausnutzen. Ich vermute mal, Du sammelst die Liste "a" selber zusammen. Wenn Du dabei die Dict-Werte zB in ein Tupel (Name, Vorname) umwandelst, könntest Du den Sort viel einfacher bekommen und Du sparst Speicherplatz und Laufzeit. Das wird man sicherlich erst bei seeehr vielen Daten merken...
a = [ ('muster', 'bill'), ('kid', 'bill'), ('muster', 'alfons'), ('klinger', 'christian')] a.sort() a [('kid', 'bill'), ('klinger', 'christian'), ('muster', 'alfons'), ('muster', 'bill')]
Nur mal so als Anregung. Vielleicht bin ich ja auch auf dem falschen Dampfer... -- Mit freundlichen Grüßen Klaus Meyer :-) _______________________________________________ Python-de maillist - Python-de@python.net http://python.net/mailman/listinfo/python-de
participants (9)
-
Achim Domma (ProCoders)
-
Andreas Jung
-
Christian Klinger
-
Dinu Gherman
-
hcz@hczim.de
-
Klaus Meyer
-
martin@v.loewis.de
-
Stefan Schwarzer
-
Uwe Schmitt