[Python-de] Versionen korrekt sortieren

Philipp Kraus philipp.kraus at flashpixx.de
Di Nov 13 23:17:52 CET 2012


On 2012-11-13 21:43:36 +0100, Ulrich Eckhardt said:

> Philipp Kraus wrote:
>> ich habe Versionsnummern von Bibliotheken, also eine Liste in der Form:
>> 
>> a = ["1.8.1", "1.8.10", "1.8.9", "1.8.7"]
>> 
>> Ich müsste die Nummern wie folgt sortiert bekommen
>> 1.8.1 < 1.8.7 < 1.8.9 < 1.8.10
>> bzw. in meinem Fall müsste 1.8.10 zu beginn stehen. Wie sortiert man
>> dieses effizient in Python?
> 
> Wenn Du die Nummern erst an den Punkten aufspaltest, in Integer umwandelst
> und in Tupel umwandelst, kannst Du Python's eingeboute Sortierfunktion
> nehmen:

Gut, also etwas "fertiges" dafür verwenden geht nicht?

> b = [i.split('.') for i in a]
> c = [map(int, i) for i in b]

sehe ich das richtig, dass das hier das Splitting & Umwandlung in ints macht?

> d = [tuple(i) for i in c]
> e = sorted(d)

Was macht "tupel" hier im Detail? in i steht ja, wenn ich das richtig 
sehe, so etwas
[1, 8, 1] bzw [1, 8, 10]

Danke das hilft definitiv weiter



Mehr Informationen über die Mailingliste python-de