Sortieren eines Tupels

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
alpha
User
Beiträge: 195
Registriert: Freitag 23. Mai 2003, 23:24
Wohnort: Ulm

Hallo Zusammen,

ich habe Probleme sowas

Code: Alles auswählen

dict = (
            [2,[["hallo1",0],["Hello1",0],["/picpath/pic1.jpg",0]]],
            [4,[["hallo2",0],["Hello2",0],["/picpath/pic2.jpg",0]]],
            [1,[["hallo3",0],["Hello3",0],["/picpath/pic3.jpg",0]]],
            [5,[["hallo4",0],["Hello4",0],["/picpath/pic4.jpg",0]]],
            [3,[["hallo5",0],["Hello5",0],["/picpath/pic5.jpg",0]]]
        )
mit dict.sort() zu sortieren. Ich möchte nach der vorderen Zahl sortiert haben. Weiß jemand wie man sowas macht?

Danke und Gruß
alpha
lunar

Das ist kein Wörterbuch, also solltest du es auch nicht "dict" nennen. Das Ganze ist ein Tupel, und Tupel kann man nicht in-place sortieren.

Zum Sortieren kannst du entweder das "key"-Argument von "sorted()" benutzen, oder aus "dict" ein echtes Wörterbuch machen, und dessen Schlüssel sortieren. Letzteres allerdings ist momentan unmöglich, da du das Builtin "dict()" neu gebunden hast, weswegen du den "dict()"-Konstruktor nicht aufrufen kannst.

Im Allgemeinen ist diese Datenstruktur meines Erachtens zu verschachtelt, ein eigener Typ für die inneren Listen wäre besser geeignet.
alpha
User
Beiträge: 195
Registriert: Freitag 23. Mai 2003, 23:24
Wohnort: Ulm

Hallo Lunar,

ich gebe Dir recht die 2te verschachtelung ist unnötig.

Code: Alles auswählen

d = (    
            [1,["hallo1",0],["Hello1",0],["/picpath/pic1.jpg",0]],
            [2,["hallo2",0],["Hello2",0],["/picpath/pic2.jpg",0]],
            [3,["hallo3",0],["Hello3",0],["/picpath/pic3.jpg",0]],
            [4,["hallo4",0],["Hello4",0],["/picpath/pic4.jpg",0]],
            [5,["hallo5",0],["Hello5",0],["/picpath/pic5.jpg",0]]
        ) 
sorted(d) funktioniet so wie ich es wollte. Danke für die Hilfe.

Grüße
alpha
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

So ist d immer noch ein Tupel und d.sort() wird nicht gehen, wohingegen sorted(d) eine Liste zurückgibt. Das kann natürlich gewollt sein, aber das glaube ich nicht ...
Mach' doch einfach

Code: Alles auswählen

d = [ ... ] # statt d = ( ... )
d.sort()
d.sort() funktioniert in-place.

HTH
Christian
alpha
User
Beiträge: 195
Registriert: Freitag 23. Mai 2003, 23:24
Wohnort: Ulm

Oder so :D
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Wobei die Datenstruktur immer noch nach einem dict riecht ... zumindest wenn die erste Zahlenspalte IDs sein sollen!
Benutzeravatar
Goswin
User
Beiträge: 363
Registriert: Freitag 8. Dezember 2006, 11:47
Wohnort: Ulm-Böfingen
Kontaktdaten:

lunar hat geschrieben:Das ist kein Wörterbuch.
Ich lobe dich für deine Mühe, dich auf Deutsch auszudrücken. *applaus*
Aber für "Dictionary" sollte man nicht "Wörterbuch", sondern "Datenbuch" sagen.
lunar

Goswin hat geschrieben:Aber für "Dictionary" sollte man nicht "Wörterbuch", sondern "Datenbuch" sagen.
Warum?
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

lunar hat geschrieben:
Goswin hat geschrieben:Aber für "Dictionary" sollte man nicht "Wörterbuch", sondern "Datenbuch" sagen.
Warum?
Ja, das wüsste ich auch gerne.
Denn ebenso wenig wie Wörter drin stehen, ist es auch ein Buch.

Dann schon eher "assoziatives Feld". Aber das versteht nicht jeder.
Ich finde "Wörterbuch" in Ordnung. :)
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Goswin hat geschrieben:Aber für "Dictionary" sollte man nicht "Wörterbuch", sondern "Datenbuch" sagen.
Wenn du unbedingt verhindern möchtest, dass dich jemand ohne Nachfrage versteht: dann ja ;-) Wörterbuch ist in der Informatik eine gängige Übersetzung für Dictionary. Datenbuch ist mir in fünf Jahren Studium noch nie untergekommen.
Das Leben ist wie ein Tennisball.
Antworten