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

如何基于首个元素移除数组重复项?嵌套数组场景求解

解决嵌套二元列表按首个元素去重并保留首次出现的问题

嘿,这个场景我之前处理过!普通列表用list(dict.fromkeys(lst))去重确实方便,但碰到这种每个元素都是二元子列表的情况,就没法直接套用了。不过有两个实用的办法能实现你要的效果——只保留每个首个元素的首次出现实例,不管第二个元素是什么:

方法一:利用Python 3.7+的有序字典特性(简洁版)

从Python 3.7开始,字典会严格保留键的插入顺序,我们可以用字典推导式把每个子列表的首个元素作为键,整个子列表作为值,这样重复的键会被首次出现的子列表覆盖,最后提取字典的值转成列表就行:

lst = [['a','1'],['b','2'],['b','1'],['c','3'],['c','2']]
deduped_lst = list({item[0]: item for item in lst}.values())
print(deduped_lst)  # 输出: [['a', '1'], ['b', '2'], ['c', '3']]

这个写法非常简洁,一行就能搞定,前提是你用的是Python 3.7及以上版本。

方法二:循环+集合追踪(兼容旧版本)

如果你的Python版本低于3.7(字典不保证插入顺序),或者你想更直观地控制去重逻辑,可以用循环配合集合来记录已经出现过的首个元素:

lst = [['a','1'],['b','2'],['b','1'],['c','3'],['c','2']]
seen_first_elements = set()
deduped_lst = []

for sublist in lst:
    first_elem = sublist[0]
    if first_elem not in seen_first_elements:
        seen_first_elements.add(first_elem)
        deduped_lst.append(sublist)

print(deduped_lst)  # 输出: [['a', '1'], ['b', '2'], ['c', '3']]

这个方法的逻辑很清晰:用集合seen_first_elements存已经处理过的首个元素,遍历原列表时,只有当当前子列表的首个元素没出现过,才把它加入结果列表,同时更新集合。不管什么Python版本都能稳定运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:45:53