python - 根据指定删除重复的列表字典
问题描述
下面列出字典,如果我们有重复的名称,则需要获取具有指定的字典。如果它的单一名称,则需要获取没有指定的字典
lst = [{'desig': '', 'name': 'William'}, {'desig': 'Chairman of the Board', 'name': 'William'}, {'desig': '', 'name': 'English'}, {'desig': 'Director', 'name': 'English'}, {'desig': '', 'name': 'Charles '}]
我的输出应该如下所示。
lst = [{'desig': 'Chairman of the Board', 'name': 'William'}, {'desig': 'Director', 'name': 'English'}, {'desig': '', 'name': 'Charles '}]
解决方案
以下应该可以解决您的问题。请注意,如果名称不完全相同,它们将被视为不同的名称。在您的原始帖子中,第二个项目的名称为“William”,而第一个项目的名称为“William”,在 m 之后有一个空格!!!
data = [{'desig': '', 'name': 'William'}, {'desig': 'Chairman of the Board', 'name': 'William'},
{'desig': '', 'name': 'English'}, {'desig': 'Director', 'name': 'English'},
{'desig': '', 'name': 'Charles '}]
cleaned_data = []
names_added = []
for entry in data:
if entry['name'] in names_added:
if entry['desig'] != '': # the != '' is actually not necessary, but included for clarity
i = names_added.index(entry['name'])
cleaned_data[i]=entry
else:
cleaned_data.append(entry)
names_added.append(entry['name'])
print(cleaned_data)
推荐阅读
- ffmpeg - Ffmpeg 转换为 HLS - 视频质量极低
- javascript - React Native 组件不能使用 super
- string - 将字符串转换为任何其他原始类型的惯用方式
- docker - 重新连接到由于 ssh 断开而分离的 docker 容器
- xcode - 未找到建筑的符号
- javascript - Coveo 加载更多功能
- collapse - 在列上的字段选项中添加数组值并在 responsiveLayoutCollapseFormatter-Tabulator 上使用
- jquery - jquery tab wcag 可访问性:给定元素不允许角色表示;确保角色属性具有适合元素的值
- xamarin - 如何检测 Xamarin 表单中启用和禁用的 GPS
- php - 从字符串为 Mongo 创建 PHP 数组