You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python列表去重保留每组最高值,如何处理含短横线的特殊条目?

解决思路

我们以每个子列表的前两个元素作为分组唯一标识,遍历所有条目时维护每个分组里最后一列数值最大的条目:

  • 最后一列是-的条目权重设为低于所有合法数值,仅当对应分组无其他带数值的条目时保留
  • 字典存储分组最优条目,天然保留原列表的分组出现顺序,符合输出要求

实现代码

# 待处理列表
list_no_ok = [['A', 'a', 'Finished', '30 September 2020  12:46 PM', '8.08'],
           ['B', 'b', 'Finished', '30 September 2020  2:52 PM', '3.46'],
           ['J', 'j', 'In progress', '-', '-'],
           ['K', 'k', 'Finished', '1 October 2020  11:32 AM', '10.00'],
           ['M', 'm', 'Finished', '1 October 2020  2:12 PM', '6.15'],
           ['M', 'm', 'Finished', '1 October 2020  2:20 PM', '9.10'],
           ['N', 'n', 'Finished', '1 October 2020  3:38 PM', '7.69'],
           ['O', 'o', 'Finished', '1 October 2020  5:06 PM', '4.87'],
           ['O', 'o', 'Finished', '1 October 2020  5:37 PM', '5.90']]

group_best = {}
for row in list_no_ok:
    group_key = (row[0], row[1])
    last_val = row[-1]
    # 计算当前行权重
    current_weight = -1 if last_val == '-' else float(last_val)
    # 分组不存在则直接存入,存在则比较权重保留更大的
    if group_key not in group_best:
        group_best[group_key] = (row, current_weight)
    else:
        if current_weight > group_best[group_key][1]:
            group_best[group_key] = (row, current_weight)

# 提取结果
list_ok = [item[0] for item in group_best.values()]

输出验证

运行上述代码得到的list_ok和你期望的结果完全一致,包含带-的条目,且所有重复分组均保留了最后一列数值最大的条目。

内容的提问来源于stack exchange,提问作者bendour

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 20:36:03