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

Sortieren einer Liste

Beitragvon runge » Samstag 15. Dezember 2007, 13:44

Hallo Leuts,

ich hab ein Problem:

ich habe eine Liste in der folgende Werte gespeichert werden:
[code=][[Person1, 20] , [Person2, 90], [Person3, 95], [Person4, 15], [Person5, 25], [Person6, 70]][/code]

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=][ [Person4, 15], [Person1, 20], [Person5, 25], [Person6, 70], [Person2, 90], [Person3, 95]][/code]


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:

Beitragvon schlangenbeschwörer » 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

Beitragvon Trundle » 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
Kontaktdaten:

Beitragvon runge » 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!

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder