1. ホーム
  2. python

[解決済み] ソフトウェアのバージョンなど、ドットで区切られた数値のリストをソートする

2023-04-25 10:44:25

質問

などのバージョン文字列を含むリストを持っています。

versions_list = ["1.1.2", "1.0.0", "1.3.3", "1.0.12", "1.0.2"]

ソートしたいので、結果はこのようになります。

versions_list = ["1.0.0", "1.0.2", "1.0.12", "1.1.2", "1.3.3"]

数字の優先順位は明らかに左から右へ、そして降順であるべきです。ですから 1.2.3 の前に 2.2.32.2.2 の前に 2.2.3 .

Pythonでこれを行うにはどうすればよいですか?

どのように解決するのですか?

各バージョンの文字列を分割し、整数のリストとして比較します。

versions_list.sort(key=lambda s: map(int, s.split('.')))

Gives、あなたのリストのために。

['1.0.0', '1.0.2', '1.0.12', '1.1.2', '1.3.3']

Python3では map を返さなくなりました。 list を返さないので で囲む必要があります。 list と呼ぶ .

versions_list.sort(key=lambda s: list(map(int, s.split('.'))))

ここでマップの代わりとなるのは リスト内包 . 参照 この記事 をご覧ください。

versions_list.sort(key=lambda s: [int(u) for u in s.split('.')])