我正在尝试获取 Python 中字符串的最高版本。我试图对列表进行排序,但这当然不像 Python 对字符串表示形式进行排序那样容易。
为此,我正在尝试使用正则表达式,但它不匹配。
字符串看起来像这样:
topic_v10_ext2
topic_v20_ext2
topic_v2_ext2
topic_v5_ext2
topic_v7_ext2
我的正则表达式看起来像这样。
version_no = re.search("(?:_v([0-9]+))?", v.name)
我正在考虑将名称保存在列表中,并在列表中查找最高的 v_xx 以返回。 另外,现在我在两个 FOR 循环中执行此操作。它以 2*O(log(n)) 运行,我认为这不是最佳的。 如何快速简单的获得最高版本?
最佳答案
您可以使用 sorted
或 list.sort
和 key
:
sorted(l, key=lambda x:int(x.split('_')[1][1:]), reverse=True)
['topic_v20_ext2',
'topic_v10_ext2',
'topic_v7_ext2',
'topic_v5_ext2',
'topic_v2_ext2']
x.split('_')
:返回拆分后的str
,例如:['topic', 'v20', 'ext2']
- 由于版本是排序的关键,所以选择
x.split('_')[1]
- 所选
V20
包含不需要的字符“V”,因此通过切片[1:]
重新选择它以获取所有数字。 - 最后,将数字转换为
int
以进行数字排序。
此外,sorted
默认返回升序排序。由于您需要降序,请使用 reverse=True
。
关于python - 在 Python 中获取最高的字符串版本号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54829128/