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

如何按字典的键a值过滤去重字典列表?

没问题,这是几个能帮你快速实现按a键去重的Python方案,每个a值仅保留一个条目:

方法1:利用字典键的唯一性(简洁高效)
Python字典的键是天然唯一的,我们可以用字典推导式把a的值作为键,对应的字典作为值,自动完成去重:

l = [ {'a': 123, 'b': 456}, {'a': 322, 'b': 44454}, {'a': 123, 'b': 134} ]
# 保留每个a值对应的最后一个出现的字典
result = list({d['a']: d for d in l}.values())
print(result)
# 输出:[{'a': 322, 'b': 44454}, {'a': 123, 'b': 134}]

如果想保留第一个出现的同a值字典,只需要先反转列表再处理,最后再反转回来:

result = list({d['a']: d for d in reversed(l)}.values())[::-1]
print(result)
# 输出:[{'a': 123, 'b': 456}, {'a': 322, 'b': 44454}]

方法2:循环+集合跟踪(直观可控)
这种方法更适合新手理解,用一个集合记录已经见过的a值,遍历列表时只保留未出现过的条目:

l = [ {'a': 123, 'b': 456}, {'a': 322, 'b': 44454}, {'a': 123, 'b': 134} ]
seen_a = set()
filtered_list = []

for item in l:
    current_a = item['a']
    if current_a not in seen_a:
        seen_a.add(current_a)
        filtered_list.append(item)

print(filtered_list)
# 输出:[{'a': 123, 'b': 456}, {'a': 322, 'b': 44454}]

如果要保留最后出现的同a值条目,只需要倒序遍历列表,最后再把结果反转回来即可。

两种方法都能满足你的需求:字典推导式代码更短、执行效率高;循环方法逻辑更直观,方便你根据需要调整保留规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:12:42