我有以下列表:
erra_eus_repo = [(u'RHSA-2017:2796', u'6.7'), (u'RHSA-2017:2796', u'6.8'), (u'RHSA-2017:2794', u'7.2'), (u'RHSA-2017:2793', u'7.3')]
我试图从每个元组
中获取 float
点数:
6.7, 6.8 ,7.2, 7.3
并获取点.ie之前每个版本的最大编号:
new_list = [ 6.8, 7.3 ]
请注意,max()
在这里不起作用,因为如果我有 5.9 和 5.11,我将得到最大值 5.9,我希望结果为 5.11,因为 11 > 9。
我尝试过的:
eus_major = []
eus_minor = []
for major in erra_eus_repo:
minor = (major[1][2])
major = (major[1][0])
if major not in eus_major:
eus_major.append(major)
if minor not in eus_minor:
eus_minor.append(minor)
print(eus_major, eus_minor)
目前我得到:
[u'6', u'7'] [u'7', u'2', u'3']
最佳答案
例如,您可以通过组合 groupby
和排序来实现此目的:
from itertools import groupby
srt_list = sorted(erra_eus_repo, key=lambda x: x[1]);
max_list = []
for key, group in groupby(srt_list, lambda x: x[1].split('.')[0]):
max_el = max(list(group), key = lambda y: int(y[1].split('.')[1]))
max_list.append(float(max_el[1]))
首先,根据每个元组的第二个元素对数组进行排序,以获得具有匹配的非十进制数的元素序列,以便使用 groupby
进行分组。 groupby
将元素分组为 - 每个组将表示一个具有公共(public) X 的序列 X.Z。在每个序列中 - 分组程序会找到具有最大小数部分的那个,并将其视为独立数字。然后将整个数字附加到列表中,其中最大值作为 float 。
关于python - 获取元组列表中 float 的最大值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47020687/