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

如何基于索引6的最大值去除Python元组列表中的重复值

Python元组列表按规则去重实现

需求说明

给定如下元组列表,需对重复条目去重,重复条目仅保留索引6位置取值最大的条目:

[('John', 53, "Yes", "No", "No", "No", 62.4, "Yes", "Yes"), ('Amy', 46, "No", "No", "No", "No", 52.2, "No", "No"), ('John', 53, "Yes", "No", "No", "No", 65, "No", "No")]

预期输出:

[('Amy', 46, "No", "No", "No", "No", 52.2, "No", "No"), ('John', 53, "Yes", "No", "No", "No", 65, "Yes", "Yes")]

实现思路

  • 首先确定重复判定规则:示例中两条John的姓名、年龄字段完全一致,判定为同一组重复条目,我们以元组前2位(姓名+年龄)作为分组键
  • 用字典临时存储分组数据,每组遍历过程中仅保留索引6位置数值最大的元组
  • 最终将字典值转为列表即为去重结果

实现代码

original_data = [
    ('John', 53, "Yes", "No", "No", "No", 62.4, "Yes", "Yes"),
    ('Amy', 46, "No", "No", "No", "No", 52.2, "No", "No"),
    ('John', 53, "Yes", "No", "No", "No", 65, "No", "No")
]

temp_dict = {}
for item in original_data:
    # 分组键可根据实际重复判定规则调整切片范围,示例以姓名+年龄作为重复判定依据
    group_key = item[:2]
    if group_key not in temp_dict:
        temp_dict[group_key] = item
    else:
        # 比较索引6的数值,保留数值更大的条目
        if item[6] > temp_dict[group_key][6]:
            # 如果需要保留原最大条目的后两位字段,可替换为下面注释的代码
            # temp_dict[group_key] = temp_dict[group_key][:6] + (item[6],) + temp_dict[group_key][7:]
            temp_dict[group_key] = item

result = list(temp_dict.values())
print(result)

注:如果你给出的预期输出中,John对应条目索引7、8位保留了旧值,只需打开代码中的注释行替换原有赋值逻辑即可匹配预期输出。

内容的提问来源于stack exchange,提问作者asd-qwert

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 20:24:03