python - 获取元组列表中 float 的最大值?

标签 python list max

我有以下列表:

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/

相关文章:

MySQL 如何从下表中为每对值仅选择最高值?

sql - 选择具有多行的 1 行?

python - 在计算 Python 中的总列表计数时不计算空列表

python - 根据形状对 numpy 数组列表进行分组。 Pandas ?

python - 用于在 python 中进行单元测试的局部变量,用于验证测试函数的功能

python - 抓取项目列表并将其合并到一个属性中

java - 在 JSTL 中显示列表元素 <c :/forEach> with counter variable

MySQL 仅更新 WHERE max()

python - 从 tar 中仅提取一个目录(在 python 中)

python - 字母组合作为python中的参数