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

Python如何删除嵌套元组列表中首元素重复的元组并修正无效代码

问题原因

你写的代码判断逻辑存在错误:你当前判断 tup[0] not in new_tup_lst,但new_tup_lst里存储的是完整的元组对象(比如('B', '28D')),而tup[0]是字符串类型的首元素(比如'B'),二者类型和内容都不匹配,所以这个判断永远返回True,所有元组都会被添加到新列表中,最终输出和原列表完全一致。

修正方案

你需要额外用一个单独的集合来记录已经出现过的元组首元素,判断逻辑改为校验当前元组的首元素是否在已出现的集合中即可,修正后的代码如下:

tup_list = [[('A', '10'), ('B', '28D'), ('C', '14'),('B','70F')], 
            [('B', '49C'), ('C', 'T26'), ('D', 'xyz')],
            [('A', '24K'), ('C', 'B28'), ('D', '54C')]]

new_lst = []
for tup_l in tup_list:
    seen = set() # 记录当前子列表已出现的首元素
    new_tup_lst = []
    for tup in tup_l:
        first_key = tup[0]
        if first_key not in seen:
           new_tup_lst.append(tup)
           seen.add(first_key) # 首元素加入已出现集合
    new_lst.append(new_tup_lst)
print(new_lst)

运行后输出和你期望的结果完全一致:

[[('A', '10'), ('B', '28D'), ('C', '14')], 
[('B', '49C'), ('C', 'T26'), ('D', 'xyz')], 
[('A', '24K'), ('C', 'B28'), ('D', '54C')]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 08:27:03