Seite 1 von 1

Sortieren einer Liste nicht nach Groß- und Kleinschreibung

Verfasst: Mittwoch 12. August 2009, 11:16
von Spleen
Hey,

ich möchte gerne eine Liste so alphabetisch sortieren, dass zwischen Groß- und Kleinschreibung nicht unterschieden wird. Habe auch eine Möglichkeit gefunden wie es funktioniert. Doch wenn ich es mit einer 2D-Liste versuche, wird dabei immer ein Fehler gemeldet.

Code: Alles auswählen

l = [("  1", "a", "B", "c", "D"),("  2", "E", "f", "G", "h"),("  3", "i", "J", "k", "L"),("  4", "M", "n", "O", "p")]
lcmp = lambda idx: lambda i, j: (i[idx] < j[idx]) and -1 or \
        (i[idx] < j[idx]) and 1 or 0
l.sort(key=lambda x: x.lower())
Fehlermeldung:

Code: Alles auswählen

Traceback (most recent call last):
  File "<pyshell#68>", line 1, in <module>
    l.sort(key=lambda x: x.lower())
  File "<pyshell#68>", line 1, in <lambda>
    l.sort(key=lambda x: x.lower())
AttributeError: 'tuple' object has no attribute 'lower'
Falls jemand eine Lösung wüsste, wie ich die Sache am besten machen könnte, wäre es klasse.

Danke schonmal im Voraus.

Verfasst: Mittwoch 12. August 2009, 11:28
von numerix
Mach aus den Tupeln vorher strings und alles wird gut:

Code: Alles auswählen

l.sort(key=lambda x: "".join(x).lower())

Verfasst: Mittwoch 12. August 2009, 11:33
von Spleen
Ja, na super - funktioniert einwandfrei.

Ich wusste es: Der Teufel ist ein Eichhörnchen.

Danke dir