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

如何移除列表字典中ID重复的字典(非完全重复条目)

移除列表中ID重复的字典(保留首次出现项)

给定如下列表:

original_list = [
    {"name": "name1", "zipcode": "zipcode1", "id": "id1"},
    {"name": "name2", "zipcode": "zipcode2", "id": "id2"},
    {"name": "name1", "zipcode": "zipcode3", "id": "id1"}
]

需要移除所有ID重复的字典(即使zipcode等其他字段不同),最终得到每个ID仅保留首次出现的结果:

result_list = [
    {"name": "name1", "zipcode": "zipcode1", "id": "id1"},
    {"name": "name2", "zipcode": "zipcode2", "id": "id2"}
]

方法一:遍历+集合记录已出现ID

这是最直观高效的方式,通过集合跟踪已处理的ID,只保留首次出现的字典:

seen_ids = set()
result = []
for item in original_list:
    item_id = item["id"]
    if item_id not in seen_ids:
        seen_ids.add(item_id)
        result.append(item)

print(result)

说明:

  • 用空集合seen_ids存储已遇到的ID,查询效率为O(1)
  • 遍历原列表时,若当前字典的ID未在集合中,就将其加入结果列表并记录ID
  • 时间复杂度O(n),完全保留原列表的顺序

方法二:利用字典键的唯一性(Python 3.7+)

Python 3.7及以上版本的字典会保留插入顺序,可通过字典存储唯一ID对应的字典,最终提取值列表:

unique_dict = {}
for item in original_list:
    # 仅当ID未存在时才添加,确保保留首次出现的项
    if item["id"] not in unique_dict:
        unique_dict[item["id"]] = item
result = list(unique_dict.values())

print(result)

说明:

  • 以id作为字典的键,确保每个ID仅对应一个字典
  • 遍历过程中跳过已存在ID的项,自然保留首次出现的字典
  • 最终将字典的值转为列表,结果顺序与原列表一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 06:20:31