ich bin nicht so der python-crack und bei etwas komplizierterem Sortieren geht mir die Fantasie aus.
Folgendes Problem: Ich hab eine Liste, die z.B. so aussehen kann:
['2,17', '20,6','8,33-34.', '8,33', '8,37-59', '1,42','8,33-35','8,44.45', '2,10', '2,13','5']
Diese Liste möchte ich gerne sortieren und zwar erst nach der Zahl vor dem Komma und dann nach der Zahl nach dem Komma...das würde in diesem Beispiel dann so aussehen:
['1,42', '2,10', '2,13', '2,17', '5', '8,33', '8,33-34', '8,33-35', '8,37-59', '8,44.45', '20,6']
Dadurch, dass das strings sind ist die list.sort()-Funktion etwas blöd, weil er dann sowas produziert:
['1,42', '2,10', '2,13', '2,17', '20,6', '5', '8,33', '8,33-34', '8,33-35', '8,37-59', '8,44.45']
Da ist dann '20,6' nicht am Ende sondern in der Mitte, weil er halt nicht die Zahlen erkennt und nur ein Zeichen nach dem anderen vergleicht. Nun hatte ich versucht das in zwei Listen zu teilen - eine mit dem ersten Teil (vor dem Komma) und die andere mit dem zweiten Teil enthalten, aber weiter wusste ich dann auch nicht wirklich und in int kann man das mit den Bindestrichen und Punkten ja auch nicht umwandeln.
Dazu kommt noch, dass ich eine zweite Liste mit Zahlen habe, die der ersten List zugeordnet sind. Wenn also die erste (komplexere) Liste umgeordnet wird, dann müsste die zweite parallel umgeordnet werden...
Im Forum bin ich auf das hier gestoßen:
Code: Alles auswählen
# Paralleles Sortieren von zwei Listen
# Autor: Dieter Schön
# Quelle: http://www.xing.com/app/forum?op=showarticles;id=2003500
a = ['3','2','4','1']
b = ['uschi','peter','karsten','jens']
def parallel_sort_zipzip(list1, list2):
tuples = zip(list1, list2)
tuples.sort()
return zip(*tuples)
a,b = parallel_sort_zipzip(a, b)
Viele Worte, aber ich glaube so schwer ist das gar nicht, wenn man nur weiß wies geht
Weiß es hier jemand?