首页 > 解决方案 > 根据指定删除重复的列表字典

问题描述

下面列出字典,如果我们有重复的名称,则需要获取具有指定的字典。如果它的单一名称,则需要获取没有指定的字典

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 '}]

标签: python

解决方案


以下应该可以解决您的问题。请注意,如果名称不完全相同,它们将被视为不同的名称。在您的原始帖子中,第二个项目的名称为“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)

推荐阅读