Sortieren einer Liste

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
runge
User
Beiträge: 8
Registriert: Sonntag 9. Dezember 2007, 12:10
Wohnort: Berlin

Samstag 15. Dezember 2007, 13:44

Hallo Leuts,

ich hab ein Problem:

ich habe eine Liste in der folgende Werte gespeichert werden:

Code: Alles auswählen

[[Person1, 20] , [Person2, 90], [Person3, 95], [Person4, 15], [Person5, 25], [Person6, 70]]
Die Bezeichner "PersonX" sind Referenzen auf Objekte und der darauffolgende Wert gibt eine Prozentzahl an.

Diese Liste will ich nun sortieren lassen nach Prozentzahlen, sodass das rauskommt:

Code: Alles auswählen

[ [Person4, 15], [Person1, 20], [Person5, 25], [Person6, 70], [Person2, 90], [Person3, 95]]

Hier nochmal der Quelltext damit ihr es besser versteht wie das ganze überhaupt funktioniert:


http://pastebin.com/m44a3ac3f

Code: Alles auswählen

    def partnersuche(self, knoten):
        #Die Methode 'partnersuche' kriegt einen Knoten uebergeben, von dem das Wunschprofil
        #geholt wird(wunschprofil). Dieses wird ein einer tempvariable gespeichert und mit allen
        #Elementen der Listen verglichen.
        potListe = []

        potlaenge = 0
        if self.aktPos <> None:
            self.erstePosition()
            listenlaenge = self.laenge
            while listenlaenge > 0:
                print listenlaenge
                potpartner = self.holeElement()
                wunschprofil = knoten.holeWunschprofil()
                prozent = 100

                
                
                if potpartner.holeNickname() == knoten.holeNickname():
                    print "potpartner = wunschprofil"
                    self.naechstePosition()       
                
                else:              
                    
                    if wunschprofil.holeAlter() <> "beliebig" and wunschprofil.holeAlter2() <> "beliebig":
                        if wunschprofil.holeAlter() <= potpartner.holeAlter() and wunschprofil.holeAlter2() >= potpartner.holeAlter():
                            print "alter stimmt"
                            prozent = prozent - 20
                        else:
                            None
                    else:
                        print "alterbeliebig"
                        prozent = prozent - 20
                    if wunschprofil.holeGroesse() <> "beliebig":
                        if wunschprofil.holeGroesse() == potpartner.holeGroesse():
                            print "groesse stimmt"
                            prozent = prozent - 20
                        else:
                            None
                    else:
                        print "groessebeliebig"
                        prozent = prozent - 20
                    if wunschprofil.holeFigur() <> "beliebig":    
                        if wunschprofil.holeFigur() == potpartner.holeFigur():
                            print "figur stimmt"
                            prozent = prozent - 20
                        else:
                            None
                    else:
                        print "figurbeliebig"
                        prozent = prozent - 20
                    if wunschprofil.holeRaucher() <> "beliebig":
                        if wunschprofil.holeRaucher() == potpartner.holeRaucher():
                            print "raucher stimmt"
                            prozent = prozent - 20
                        else:
                            None
                    else:
                        print "raucherbeliebig"
                        prozent = prozent - 20
                    if wunschprofil.holeHobby() <> "beliebig":
                        if wunschprofil.holeHobby() == potpartner.holeHobby():
                            print "hobby stimmt"
                            prozent = prozent - 20
                        else:
                            None
                    else:
                        prozent = prozent - 20
                    if prozent <= 60:
                        potListe.append([potpartner.holeNickname(), prozent])
                        potlaenge=potlaenge+1
                        print potListe
                      
                    else:
                        pass 
                    self.naechstePosition()
                listenlaenge = listenlaenge - 1
        else:
            pass
Ich danke schonmal im Vorraus für jede kleine Hilfe :wink:
schlangenbeschwörer
User
Beiträge: 419
Registriert: Sonntag 3. September 2006, 15:11
Wohnort: in den weiten von NRW
Kontaktdaten:

Samstag 15. Dezember 2007, 14:04

Code: Alles auswählen

liste.sort(key=lambda x: x[1])
Benutzeravatar
Trundle
User
Beiträge: 591
Registriert: Dienstag 3. Juli 2007, 16:45

Samstag 15. Dezember 2007, 14:05

Code: Alles auswählen

from operator import itemgetter

liste = [[Person1, 20] , [Person2, 90], [Person3, 95], [Person4, 15], [Person5, 25], [Person6, 70]]
sortierte_liste = sorted(liste, key=itemgetter(1))
runge
User
Beiträge: 8
Registriert: Sonntag 9. Dezember 2007, 12:10
Wohnort: Berlin

Samstag 15. Dezember 2007, 14:32

Danke für die schnelle Hilfe. Funktioniert einwandfrei das sortieren, war schon fast am verzweifeln, aber jetzt läuft dat wieder :D


DANKE!
Antworten