PYTHON: Listen innerhalb einer Liste nach einem bestimmten Feld sortieren

Diskutiere PYTHON: Listen innerhalb einer Liste nach einem bestimmten Feld sortieren im Ruby, php, Perl, Python ... Forum im Bereich Programmieren unter Linux/Unix; Hallo zusammen, folgendes Problem: Ich habe eine Liste in der viele Listen vorhanden sind: a = [ ['Name', 'Vorname', 'Alter'], ['Name',...

  1. KRiusd

    KRiusd Jungspund

    Dabei seit:
    25.04.2005
    Beiträge:
    23
    Zustimmungen:
    0
    Hallo zusammen,

    folgendes Problem:

    Ich habe eine Liste in der viele Listen vorhanden sind:

    Code:
    a = [ ['Name', 'Vorname', 'Alter'], ['Name', 'Vorname', 'Alter'], ... ]
    Wenn ich die Liste nach dem ersten Element sortieren will ist das ja einfach:
    Code:
    a.sort()
    Wie stelle ich es jetzt an das ich nach Vorname oder Alter sortieren kann!


    Schon mal danke

    KRiusd
     
  2. Anzeige

    Anzeige

    Wenn du mehr über Linux erfahren möchtest, dann solltest du dir mal folgende Shellkommandos anschauen.


    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 thorus, 30.12.2005
    Zuletzt bearbeitet: 09.01.2006
    thorus

    thorus GNU-Freiheitskämpfer

    Dabei seit:
    03.11.2002
    Beiträge:
    757
    Zustimmungen:
    0
    Ort:
    Passau, Niederbayern
    sort() kann man eine Vergleichsfunktion übergeben. In deinem Fall, könnte man so schreiben:
    Code:
    lcmp = lambda idx: lambda i, j: (i[idx] < j[idx]) and -1 or \
                (i[idx] > j[idx]) and 1 or 0
    
    a.sort(cmp=lcmp(1))    # Vorname
    a.sort(cmp=lcmp(2))    # Alter
    
     
  4. #3 KRiusd, 09.01.2006
    Zuletzt bearbeitet: 09.01.2006
    KRiusd

    KRiusd Jungspund

    Dabei seit:
    25.04.2005
    Beiträge:
    23
    Zustimmungen:
    0
    Vielen Dank!

    Das hilft mir schon mal ein wenig!

    Allerdings meldet sich Python mit:
    Code:
    TypeError: sort() takes no keyword arguments
    Habe gerade festgestellt, das Python 2.3.4 (mit dem ich arbeite) noch nicht mit cmp, key und reverse umgehen kann!

    Gibt es noch eine andere Möglichkeit sort() den lcmp Befehl schmackhaft zu machen?

    Thx
     
  5. #4 thorus, 09.01.2006
    Zuletzt bearbeitet: 09.01.2006
    thorus

    thorus GNU-Freiheitskämpfer

    Dabei seit:
    03.11.2002
    Beiträge:
    757
    Zustimmungen:
    0
    Ort:
    Passau, Niederbayern
    Ok, da ein Upgrade wohl bei dir nicht hilft (btw. ich liebe Decorators in 2.4, mein Weihnachtsbaum ist voller @s vor lauterm decorieren. :D), müssen wir mal in Python 2.3 gucken:
    Code:
    >>> print [].sort.__doc__
    L.sort(cmpfunc=None) -- stable sort *IN PLACE*; cmpfunc(x, y) -> -1, 0, 1
    Während in 2.4:
    Code:
    >>> print [].sort.__doc__
    L.sort(cmp=None, key=None, reverse=False) -- stable sort *IN PLACE*;
    cmp(x, y) -> -1, 0, 1
    Also einfach statt cmp cmpfunc angeben, oder einfach gar kein Keyword angeben weils ja sowieso das erste Argument jeweils ist.
    Sorry, war mein Fehler, das wusste ich nicht, dass es in 2.3 anders heißt.

    EDIT:
    Merke grade, dass die Funktion lcmp vielleicht etwas unübersichtlich ausschaut, man könnte sie natürlich auch so schreiben:
    Code:
    def lcmp(idx):
        def t(i, j): 
            if i[idx] < j[idx]:        # kleiner
                return -1
            elif i[idx] > j[idx]:      # größer
                return 1
            else:                      # gleich
                return 0
    
        return t
     
  6. KRiusd

    KRiusd Jungspund

    Dabei seit:
    25.04.2005
    Beiträge:
    23
    Zustimmungen:
    0
    Jetzt hats geklappt! :)

    Funktioniert einwandfrei!

    Viel Dank!
     
  7. #6 Onkel_Tom, 12.07.2006
    Onkel_Tom

    Onkel_Tom Guest

    eine erweiterte Frage

    Hallo,
    ich habe ein Problem, das in die gleiche Richtung geht, aber noch nen Schritt komplexer ist.

    Ich habe auch eine Liste, in der wiederum Listen stehen

    Code:
    b = [ ['Art', 'Variante', 'Typ', float(Dauer)], ['Art', 'Variante', 'Typ', float(Dauer)], ...]
    Ich will nun diese Liste so sortieren, dass alle Einträge, bei denen Art und Variante und Typ gleich sind untereinander stehen und nach Dauer aufsteigend sortiert sind.

    Also in etwa so:
    Code:
    print b
    >>>>
    a var1 typ2 2
    b var2 typ1 3
    a var1 typ2 1
    b var2 typ2 1
    
    soll werden zu:
    Code:
    print b.sort()
    >>>>
    a var1 typ2 1
    a var1 typ2 2
    b var2 typ1 3
    b var2 typ2 1
    
    Vielen Dank für Hilfe.
    Onkel_Tom
     
Thema: PYTHON: Listen innerhalb einer Liste nach einem bestimmten Feld sortieren
Besucher kamen mit folgenden Suchen
  1. python listen sortieren

    ,
  2. listen sortieren python

    ,
  3. python liste sortieren

    ,
  4. python listen in listen,
  5. phyton listen sortieren,
  6. python listen sortieren muster,
  7. python liste alphabetisch sortieren,
  8. liste sortieren python,
  9. python liste in liste,
  10. python liste sortieren aufsteigend,
  11. zahlen sortieren python,
  12. pyhton listen der größe nach sortieren,
  13. python 3 listen sortieren,
  14. liste [[]] python,
  15. python liste nach datum sortieren,
  16. element in liste verschieben python,
  17. python sortieren listen,
  18. python liste nach bestimmten feld sortieren,
  19. python feld,
  20. python liste von liste nach dem 1 element sortieren,
  21. python sortieren liste,
  22. python listen alphabetisch sortieren,
  23. python zahlen sortieren,
  24. python mehrdimensionale liste sortieren,
  25. elemente in liste sortieren python
Die Seite wird geladen...

PYTHON: Listen innerhalb einer Liste nach einem bestimmten Feld sortieren - Ähnliche Themen

  1. [python] Einträge in Listen subtrahieren

    [python] Einträge in Listen subtrahieren: Hallo, ich will eine recht einfache Formel in Python umsetzen: delta T = t_(n+1) - t_(n) (Es soll die Differenz zwischen n+1-ten und n-ten Wert...
  2. Python Script Hilfe

    Python Script Hilfe: Hey Leute, bin ganz neu hier und auch das Programmieren fällt mir noch nicht ganz so leicht... hab deswegen mal eine frage und hoffe jemand kann...
  3. Python-Interpreter PyPy 5.0 freigegeben

    Python-Interpreter PyPy 5.0 freigegeben: Der Python-Interpreter PyPy wurde in Version 5.0 veröffentlicht. Die aktuelle Version des Interpreters, der wesentlich schneller als der...
  4. Python-Interpreter PyPy 4.0 freigegeben

    Python-Interpreter PyPy 4.0 freigegeben: Der Python-Interpreter PyPy wurde in Version 4.0 veröffentlicht. Die aktuelle Version des Interpreters, der wesentlich schneller als der...
  5. Python 3.5 ist fertig

    Python 3.5 ist fertig: Über eineinhalb Jahre nach Python 3.4 haben die Entwickler jetzt die nächste Version veröffentlicht. In Python 3.5 gibt es zahlreiche Neuerungen...
  1. Diese Seite verwendet Cookies um Inhalte zu personalisieren. Außerdem werden auch Cookies von Diensten Dritter gesetzt. Mit dem weiteren Aufenthalt akzeptierst du diesen Einsatz von Cookies.
    Information ausblenden