In Python sortieren - Wie sortiere ich eine Liste mit alphanumerischen Werten?

8

Ich habe eine Liste, die aus solchen Details besteht:

%Vor%

Nun möchte ich diese Liste so sortieren, dass die Werte in der folgenden Reihenfolge sind:

%Vor%

Nur list1.sort() gibt offensichtlich nicht die richtige Antwort - es gibt:

%Vor%

Ich nehme an, das liegt daran, dass Python all diese als Zeichenfolgen direkt behandelt. Ich möchte sie jedoch anhand ihres numerischen Werts FIRST und dann nach der Zahl sortieren.

Wie gehe ich vor?

Vielen Dank:)

    
Randomly Named User 14.10.2013, 18:16
quelle

2 Antworten

12

Sie möchten natürliche Sortierung :

%Vor%

Beispielverwendung:

%Vor%

Dies funktioniert, indem die Elemente in Listen aufgeteilt werden, die die Zahlen trennen und sie als ganze Zahlen anstelle von Strings vergleichen:

%Vor%

Beachten Sie, dass dies nur in Python3 funktioniert, wenn Sie immer Ints mit Ints und Strings mit Strings vergleichen, sonst erhalten Sie eine TypeError: unorderable types -Ausnahme.

    
Claudiu 14.10.2013, 18:25
quelle
0

Nun, du musst einen Weg finden, deine Strings zuerst in Zahlen zu konvertieren. Zum Beispiel

%Vor%

und dann verwenden Sie es als Sortierschlüssel:

%Vor%     
freakish 14.10.2013 18:24
quelle