This question already has answers here:
Remove duplicate dict in list in Python
(10个答案)
6年前关闭。
我有一个包含几个元素的列表,我想删除重复的元素,这是一个列表示例:
我尝试使用功能集,但出现错误,提示该列表不可散列,有人对如何删除重复项有想法吗?
为了使列表井井有条并保持字典完整,可以使用:
后者的演示:
(10个答案)
6年前关闭。
我有一个包含几个元素的列表,我想删除重复的元素,这是一个列表示例:
list = [{'status': 'OK', 'mid': '6639'}, {'status': 'OK', 'mid': '6639'}, {'status': 'OK', 'mid': '6640'}, {'status': 'OK', 'mid': '6640'}, {'status': 'OK', 'mid': '6641'}, {'status': 'OK', 'mid': '6641'}, {'status': 'OK', 'mid': '6642'}, {'status': 'OK', 'mid': '6643'}]
我尝试使用功能集,但出现错误,提示该列表不可散列,有人对如何删除重复项有想法吗?
最佳答案
您仍然可以使用set()
,但是您需要将每个列表转换为元组。在这里,我们使用键和值的排序元组来准确查找重复项:
set(tuple(sorted(el.items())) for el in somelist)
为了使列表井井有条并保持字典完整,可以使用:
seen = set()
seen_add = seen.add
[x for x in somelist if tuple(sorted(x.items())) not in seen and not seen_add(tuple(sorted(x.items())))]
后者的演示:
>>> seen = set()
>>> seen_add = seen.add
>>> [x for x in somelist if tuple(sorted(x.items())) not in seen and not seen_add(tuple(sorted(x.items())))]
[{'status': 'OK', 'mid': '6639'}, {'status': 'OK', 'mid': '6640'}, {'status': 'OK', 'mid': '6641'}, {'status': 'OK', 'mid': '6642'}, {'status': 'OK', 'mid': '6643'}]
关于python - 从包含多个元素的列表中删除重复项[重复项],我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16173347/