Sortieren einer Liste nicht nach Groß- und Kleinschreibung

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
Spleen
User
Beiträge: 16
Registriert: Donnerstag 2. Juli 2009, 09:41

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.
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Mach aus den Tupeln vorher strings und alles wird gut:

Code: Alles auswählen

l.sort(key=lambda x: "".join(x).lower())
Spleen
User
Beiträge: 16
Registriert: Donnerstag 2. Juli 2009, 09:41

Ja, na super - funktioniert einwandfrei.

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

Danke dir
Antworten