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

如何在保留顺序的前提下移除Python字典列表的重复值,保留最新条目

直接用字典做去重就可以,只需要一次反向遍历,代码精简很多:

latest_map = {}
for item in reversed(data):
    client_id = item["client"]["id"]
    # 反向遍历时第一次碰到的id对应最新数据,存进字典后后续重复的直接跳过
    if client_id not in latest_map:
        latest_map[client_id] = item

# 提取结果,输出顺序和你原实现的输出一致(最新数据在前)
summarised_messages = list(latest_map.values())

for msg in summarised_messages:
    print(msg)

对比原实现的优势

  • 只需要1次遍历,不需要两次循环处理原列表
  • 用字典做id的存在性校验,查询和插入都是O(1)复杂度,比原实现用列表做in查询、remove操作的O(n)复杂度效率更高,就算后续数据量变大也没问题
  • 不需要维护两个冗余的辅助列表,代码逻辑更直观,不容易出bug

如果需要调整最终输出顺序,比如按client id升序、或者按时间升序排列,加一行排序逻辑就行:

# 按client id升序排列
summarised_messages.sort(key=lambda x: x["client"]["id"])
# 或者按时间升序排列
# summarised_messages.sort(key=lambda x: x["date"])

内容的提问来源于stack exchange,提问作者Johnny John Boy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 20:54:04