我需要找到例如值的最大值:如何找到最大值?
[(12, 0.95), (15, 0.92), (20, 0.90), (12, 0.88), (15, 0.98), (12, 0.89)]
输出最大值与ID对应:
[(12, 0.95), (15, 0.98), (20, 0.90)]
我怎样才能在Python实现这一目标?
任何建议!感谢您的帮助
我需要找到例如值的最大值:如何找到最大值?
[(12, 0.95), (15, 0.92), (20, 0.90), (12, 0.88), (15, 0.98), (12, 0.89)]
输出最大值与ID对应:
[(12, 0.95), (15, 0.98), (20, 0.90)]
我怎样才能在Python实现这一目标?
任何建议!感谢您的帮助
只需使用基础知识:
data = [(12, 0.95), (15, 0.92), (20, 0.90), (12, 0.88), (15, 0.98), (12, 0.89)]
result_dict = {}
for id_num, value in data:
result_dict[id_num] = max(value, result_dict.get(id_num, value))
result = sorted(result_dict.items())
print(result)
如果环路内的部分是混乱的,这里有其他的方式来写它:
if id_num in result_dict:
result_dict[id_num] = max(result_dict[id_num], value)
else:
result_dict[id_num] = value
或
if id_num in result_dict:
if value > result_dict[id_num]:
result_dict[id_num] = value
else:
result_dict[id_num] = value
或
if id_num not in result_dict or value > result_dict[id_num]:
result_dict[id_num] = value
或
if id_num > result_dict.get(id_num, value):
result_dict[id_num] = value
排序,groupby
和max
!
import itertools
import operator
data = [(12, 0.95), (15, 0.92), (20, 0.90), (12, 0.88), (15, 0.98), (12, 0.89)]
sorted_data = sorted(data)
groups = itertools.groupby(sorted_data, key=operator.itemgetter(0))
result = [max(group) for _, group in groups]
itertools.groupby
采取项目的排序列表,通过一些关键功能组他们(在这种情况下,我们使用operator.itemgetter(0)
),并为您提供以下形式的迭代器:
[(keyfunc_result, [list_of_results...], ... ]
这给出了错误的结果,您需要为'groupby'添加一个键。默认键是标识,因此所有组都有0个元素,因为它们都是不同的。 –
拍摄你是对的,我认为它默认为'itemgetter(0)'。秒 –
@AlexHall修复 –
你尝试过什么到目前为止?你在解决这个问题上做了哪些尝试? – Li357