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

如何按指定索引对嵌套列表去重,保留目标元素对应首项?

嵌套列表按指定索引去重解决方案

你的问题出在原代码是拿整个子列表判断是否重复,但每个子列表的第二个元素(数值)不一样,所以所有元素都会被加入新列表。要实现按名字(子列表索引0的元素)去重,且保留每个名字首次出现的项(也就是数值最大的那个),可以这么改:

liz = [['Lina', 60], ['Gaga', 0], ['Dene', 100], ['Dene', 80], ['Dene', 0], ['Helen', 0], ['Will', 100]]
lix = []
seen_names = set()  # 用集合存已处理的名字,查询效率更高

for ele in liz:
    current_name = ele[0]
    if current_name not in seen_names:
        lix.append(ele)
        seen_names.add(current_name)

print(lix)

运行后就能得到期望输出:[['Lina', 60], ['Gaga', 0], ['Dene', 100], ['Helen', 0], ['Will', 100]]

原理很直接:用集合记录已经保留过的名字,遍历原列表时,只要当前子列表的名字没在集合里,就把它加入结果列表,同时把名字存入集合。因为原列表已经按每个名字的数值从大到小排序,首次出现的就是数值最大的项,刚好满足你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 14:37:26