如何在Python中提取字典列表里重复ID对应的字典?
找出字典列表中ID重复的条目
要找出ID出现多次的字典,你可以按以下步骤操作:
步骤1:统计每个ID的出现次数
用collections.Counter快速统计所有ID的出现频率,这是高效的实现方式之一:
from collections import Counter # 示例字典列表(添加了一个重复ID的条目用于演示) comments = [ {'ID': 2501, 'First Name': 'Edward', 'Last Name': 'Crawford', 'Email': 'c.crawford@randatmail.com', 'Location': '[1.24564352 0.94323637]', 'Registration': '12/12/2000', 'Phone': '398-2890-30'}, {'ID': 3390936, 'First Name': 'Pepe', 'Last Name': 'Slim', 'Email': 'pepe.slim@somemail.com', 'Location': '[1.7297525 0.54631239]', 'Registration': '3/8/2020', 'Phone': '341-3456-85'}, {'ID': 2501, 'First Name': 'Eddie', 'Last Name': 'Crawford', 'Email': 'e.crawford@randatmail.com', 'Location': '[1.24564352 0.94323637]', 'Registration': '12/12/2000', 'Phone': '398-2890-31'} ] # 提取所有ID并统计出现次数 id_counts = Counter(item['ID'] for item in comments)
步骤2:筛选出ID重复的字典
遍历原列表,只保留ID出现次数大于1的条目:
# 筛选出ID重复的字典 duplicate_id_items = [item for item in comments if id_counts[item['ID']] > 1] # 打印结果 for item in duplicate_id_items: print(item)
运行后会输出所有ID重复的字典条目,比如示例中ID为2501的两个字典都会被打印。
不导入模块的替代实现
如果不想使用collections模块,也可以手动统计ID次数:
# 手动统计ID出现次数 id_counts = {} for item in comments: id_val = item['ID'] id_counts[id_val] = id_counts.get(id_val, 0) + 1 # 筛选重复条目 duplicate_id_items = [item for item in comments if id_counts[item['ID']] > 1]
逻辑和用Counter一致,只是手动实现了统计功能,适合不想额外导入模块的场景。
内容的提问来源于stack exchange,提问作者project_2501
相关产品推荐
相关产品推荐

