繁体   English   中英

如何在 Python 中的给定字符串列表中找到最大的浮点数值?

[英]How to find the highest floating number value in a given list of strings in Python?

我有一个包含一些字母数字内容的数据列表。

list_data = ['version_v_8.5.json', 'version_v_8.4.json', 'version_v_10.1.json']

我想从列表中获取最高元素“version_v_10.1.json”。

使用natsort排序然后获取最后一个元素(这是最高版本)

from natsort import natsorted
list_data = ['version_v_8.5.json', 'version_v_8.4.json', 'version_v_10.1.json']
list_data = natsorted(list_data)
print(list_data.pop())

输出#

version_v_10.1.json

您可以执行以下操作:

import re

list_data = [
    "version_v_8.5.json",
    "version_v_8.4.json",
    "version_v_10.1.json",
    "version_v_10.2.json",   ####
    "version_v_10.10.json",  ####
]

pat = re.compile(r"version_v_(.*).json")

print(max(list_data, key=lambda x: [int(i) for i in pat.match(x).group(1).split(".")]))

您感兴趣的号码是正则表达式r"version_v_(.*).json"的第一组。 然后您需要拆分它以获得数字列表并将每个数字转换为int 最后,您基本上将整数列表一起比较[8, 5][8, 4][10, 1] .etc。

这样它就可以正确地找到比“ "version_v_10.10.json"大的"version_v_10.2.json" ,因为它们是软件版本。

你也可以在没有任何进口的情况下做到这一点

highest_number = 0
highest_element = ""

for item in list_data:
    parts = item.split('_')[2].split('.')
    number = float(parts[0]) + float(parts[1]) / (10 ** len(parts[1]))
    if number > highest_number:
        highest_number = number
        highest_element = item

print(highest_element)

>>> version_v_10.1.json

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM