python对带前缀的版本号进行排序


开发
python
排序
2017-12-26 11:31
评论 次
如果有一个版本号的list:
如version = ['2.0.1', '1.0.2', '1.0.21', '2,2.9', '1.2.11']
要求:要对version大小进行排序,获得最大的版本号(2.2.9)。
思路:可以转换成数字型tuple,再对其排序。>>> version = ['2.0.1', '1.0.2', '1.0.21', '2.2.9', '1.2.11'] >>> sorted(version, key=lambda x:tuple(int(v) for v in x.split("."))) ['1.0.2', '1.0.21', '1.2.11', '2.0.1', '2.2.9']
如果版本号带上前缀,key函数则会异常
>>> version = ['v2.0.1', 'v1.0.2', 'v1.0.21', 'v2.2.9', 'v1.2.11'] >>> version.sort(key=lambda x:tuple(int(v) for v in x.split("."))) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin>", line 1, in <lambda> File "<stdin>", line 1, in <genexpr> ValueError: invalid literal for int() with base 10: 'v2'
原因:转换为tuple时将之数字化存在字符,可以稍微修改以适应前缀。
>>> version = ['v2.0.1', 'v1.0.2', 'v1.0.21', 'v2.2.9', 'v1.2.11'] >>> sorted(version, key=lambda x:tuple(int(v) for v in x.replace('v', '').split("."))) ['v1.0.2', 'v1.0.21', 'v1.2.11', 'v2.0.1', 'v2.2.9']
版权声明:
本文为原创文章,由 SaintIC, Inc. 创作和发表,遵循CC BY-NC-ND 2.5许可!
本文标题是:python对带前缀的版本号进行排序, 本文来源地址:https://blog.saintic.com/blog/244.html
本文为原创文章,由 SaintIC, Inc. 创作和发表,遵循CC BY-NC-ND 2.5许可!
本文标题是:python对带前缀的版本号进行排序, 本文来源地址:https://blog.saintic.com/blog/244.html