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

如何从字典列表中提取指定key对应值存在重复的所有字典

实现提取指定key值重复字典的Python方案

方法原理

先统计所有字典中b字段的出现频率,再根据频率过滤出频率大于1的所有对应字典即可,逻辑简单高效。

完整实现代码

from collections import Counter

# 注意不要用list作为变量名,会覆盖Python内置类型,这里改为original_list
original_list = [
    {
        "a": "1",
        "b": "2",
        "c": "3"
    },
    {
        "a": "4",
        "b": "2",
        "c": "6"
    },
    {
        "a": "7",
        "b": "8",
        "c": "9"
    },
    {
        "a": "10",
        "b": "11",
        "c": "12"
    },
    {
        "a": "13",
        "b": "8",
        "c": "15"
    }
]

# 统计所有b值的出现次数
b_counts = Counter(item['b'] for item in original_list)

# 过滤出b值出现次数大于1的字典,即你需要的结果
list_duplicates = [item for item in original_list if b_counts[item['b']] > 1]

运行后list_duplicates和你给出的预期输出完全一致。

关于反向逻辑的问题

完全可以用反向删除的逻辑实现,本质和上述过滤逻辑等价,只需要把过滤条件改成剔除b值出现次数等于1的字典即可,写法如下:

list_duplicates = [item for item in original_list if b_counts[item['b']] != 1]

无依赖实现方案

如果不想导入collections模块,也可以手动统计频率,逻辑完全一致:

# 手动统计b值出现次数
b_counts = {}
for item in original_list:
    b_val = item['b']
    b_counts[b_val] = b_counts.get(b_val, 0) + 1

# 后续过滤逻辑和上面完全相同
list_duplicates = [item for item in original_list if b_counts[item['b']] > 1]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 23:45:03