[英]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.