python - 在 Python 中获取最高的字符串版本号

标签 python

我正在尝试获取 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)) 运行,我认为这不是最佳的。 如何快速简单的获得最高版本?

最佳答案

您可以使用 sortedlist.sortkey:

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/

相关文章:

python - 在函数内附加列表

python - 按 pandas 中的索引列表搜索

python - python中有 "too many yield statements"这样的东西吗?

python - 使用选择器的订阅不适用于 python - stomp.py

python - python Tensorflow工作簿执行后取消分配内存

python - 如何在python扭曲的xmlrpc_method中捕获请求信息?

python - 尝试在烤宽面条基本示例(稍作修改)上使用自己的数据集来制作用于人脸识别的神经网络

python - Ipython 交互功能绘制多个图而不是编辑一个图

python - 键盘中断不会停止我的翻译

python - 查找字符串中的子字符串