Sortowanie wersji w Pythonie.

Poniedziałek, 2011-12-05 @ 19:25 | edit
Niech g będzie listą stringów wyglądających jak nr wersji jakiegoś pakietu:
g = ["1.1", "1.2", "1.10", "1.6", "1.65", "1.59", "1.23"]
Jak wykorzystując pythona posortować tę listę tak aby otrzymać wersje chronologicznie?
['1.1', '1.2', '1.6', '1.10', '1.23', '1.59', '1.65']
Wykorzystujemy do tego moduł distutils.version:
In [1]: from distutils.version import StrictVersion

In [2]: g = ["1.1", "1.2", "1.10", "1.6", "1.65", "1.59", "1.23"]

In [3]: f = [StrictVersion(x) for x in g]

In [4]: sorted(f)
Out[4]: 
[StrictVersion ('1.1'),
 StrictVersion ('1.2'),
 StrictVersion ('1.6'),
 StrictVersion ('1.10'),
 StrictVersion ('1.23'),
 StrictVersion ('1.59'),
 StrictVersion ('1.65')]

In [5]: [str(x) for x in sorted(f)]
Out[5]: ['1.1', '1.2', '1.6', '1.10', '1.23', '1.59', '1.65']
Szczególne podziękowania dla Restless Being za zwrócenie uwagii na bibliotekę. :)