首页 > 解决方案 > 在具有重复值的 Python“列表”中查找“n”个最大元素

问题描述

假设我有一个如下所示的列表:

test= [19, 2, 8, 12, 8]

我将其排序为:

print(sorted([(val, idx) for (idx, val) in enumerate(test)], reverse = True))

输出是:

[(19, 0), (12, 3), (8, 4), (8, 2), (2, 1)]

我想提取前 4 个最大的数字。切片不起作用,因为我在列表中有重复项(8在索引 2 和 4 处)

我期望的输出是:(19, 0), (12, 3), (8, 4), (8, 2)

有没有其他方法可以完成这项工作?

标签: pythonlist

解决方案


首先通过将列表转换为集合来删除重复项,然后返回列表并对值进行排序。编码:

test= [19, 2, 8, 12, 8]

test_uniques_sorted = lsorted(list(set(test)), reverse = True)
print(test_uniques_sorted)

推荐阅读