python - 在字典列表中按键保留重复项
问题描述
我有一个字典列表,我想获得那些在键中具有相同值的字典:
my_list_of_dicts = [{
'id': 3,
'name': 'John'
},{
'id': 5,
'name': 'Peter'
},{
'id': 2,
'name': 'Peter'
},{
'id': 6,
'name': 'Mariah'
},{
'id': 7,
'name': 'John'
},{
'id': 1,
'name': 'Louis'
}
]
我想保留那些具有相同“名称”的项目,所以,我想获得类似的东西:
duplicates: [{
'id': 3,
'name': 'John'
},{
'id': 5,
'name': 'Peter'
},{
'id': 2,
'name': 'Peter'
}, {
'id': 7,
'name': 'John'
}
]
我正在尝试(不成功):
duplicates = [item for item in my_list_of_dicts if len(my_list_of_dicts.get('name', None)) > 1]
我已经清楚我对这段代码的问题,但不能做正确的句子
解决方案
另一种简洁的方式使用collections.Counter
:
from collections import Counter
my_list_of_dicts = [{
'id': 3,
'name': 'John'
},{
'id': 5,
'name': 'Peter'
},{
'id': 2,
'name': 'Peter'
},{
'id': 6,
'name': 'Mariah'
},{
'id': 7,
'name': 'John'
},{
'id': 1,
'name': 'Louis'
}
]
c = Counter(x['name'] for x in my_list_of_dicts)
duplicates = [x for x in my_list_of_dicts if c[x['name']] > 1]
推荐阅读
- java - 未能在项目 libnd4j 上执行目标 org.bytedeco:javacpp:1.5.3:build (javacpp-cppbuild-compile):
- css - 退出时的 CSS 擦除动画
- vba - 将单词图与单词表链接
- r - 如何有效计算R中栅格单元周围一定距离内的空间点数?
- java - Spring Integration - SQS 消息的异步服务激活器
- c++ - C++:用整数移动语义
- devextreme - 如何将复选框添加到 dxDataGrid 分组行
- python - 如何为 AOT 编译的 numba 扩展指定目标目录?
- android - 是否可以使用手机的 IMU 来改善用户的步行路径?
- javascript - 如何以角度合并多个数组