Sortieren von listen in listen...

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
patrickk
User
Beiträge: 31
Registriert: Donnerstag 18. August 2005, 09:07

Freitag 19. August 2005, 11:43

Hallo,

ich habe eine Liste aus [val1,val2,date]
Diese habe ich fuer 3 Werte, also:
so sieht die ausgabe aus:
[['wert1','wert2','2005,...'],[...],[...]]

Jetzt moechte ich das ganze nach dem Datum sortieren. falls nur die datumsangaben in einer Liste stehen, so geht es nat. einfach mit list.sort()
Aber wie mache ich es, wenn die Listen in den Listen sortiert werden sollen anhand des parameters [index aus liste][2], da datum auf index 2 liegt...

Hoffe ich habe mich verstaendlich ausgedrueckt.
[ [111], [2222], [333333] ]
in z.b. : [ [22222222], [333333333], [11111111] ]
111 solol hier einfach der liste1 entsprechen, in der das datum 1 enthalten ist...


Danke,


Patrick
patrickk
User
Beiträge: 31
Registriert: Donnerstag 18. August 2005, 09:07

Freitag 19. August 2005, 12:21

Hi, habe selber eine loesung gefunden, sorry, aber wer es braucht:

mit Dictionary:

Code: Alles auswählen

dict={}
for index in list:		
    tmp = index[2]			
    dict[tmp] = index 	
# Sort the dictionary keys
Keys = dict.keys()		
Keys.sort()
print("\n")
for tmp in Keys:
    title=dict[tmp][0]
    link=dict[tmp][1]
    date=dict[tmp][2]
    print (title+"\n"+date)
Edit (Leonidas): Code in Python-Tags gesetzt, bitte das nächste Mal selbst machen!
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Freitag 19. August 2005, 12:30

patrickk hat geschrieben: Aber wie mache ich es, wenn die Listen in den Listen sortiert werden sollen anhand des parameters [index aus liste][2], da datum auf index 2 liegt...
Hi Patrick!

Ich kann es im Moment leider nicht ausprobieren, da ich auf diesem Rechner nur Python 2.3 habe, aber ab Python 2.4 gibt es für sort() den zusätzlichen Parameter key.

Das könnte dann evt. so aussehen (ungetestet):

Code: Alles auswählen

l = [
    [3, 3, 2],
    [4, 4, 3],
    [5, 5, 1]
]
l.sort(cmp, lambda x: x[2])
Statt der Zahl 2 kann man ja auch eine Variable übergeben.
Ob das aber auch wirklich so funktionieren wird -- keine Ahnung.

mfg
Gerold
:-)

Edit: Es wäre nett, wenn du deinen Python-Code in python-Tags einschließen könntest.
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Antworten