python从列表中删除重复的字典

Joh*_*ohn 29 python

我有一个词典列表

l = [
{'firstname': 'joe', 'surname': 'bloggs'},
{'firstname': 'john', 'surname': 'smith'},
{'firstname': 'joe', 'surname': 'bloggs'},
{'firstname': 'jane', 'surname': 'bloggs'}
]
Run Code Online (Sandbox Code Playgroud)

我如何删除重复,即{'firstname': 'joe', 'surname': 'bloggs'}出现两次所以会希望它只出现一次?

Céd*_*ien 57

这样的事情应该做的事情:

result = [dict(tupleized) for tupleized in set(tuple(item.items()) for item in l)]
Run Code Online (Sandbox Code Playgroud)

首先,我在元组列表中转换初始字典,然后将它们放入一个集合(删除重复条目),然后再转换为字典.

  • 摆脱`set`调用中的括号 - 生成器表达式就是你想要的,而不是列表理解.否则,很好. (4认同)

小智 12

import itertools

import operator

from operator import itemgetter

import pprint

l = [

{'firstname': 'joe', 'surname': 'bloggs'},

{'firstname': 'john', 'surname': 'smith'},

{'firstname': 'joe', 'surname': 'bloggs'},

{'firstname': 'jane', 'surname': 'bloggs'}

]

getvals = operator.itemgetter('firstname', 'surname')

l.sort(key=getvals)

result = []

for k, g in itertools.groupby(l, getvals):

    result.append(g.next())

l[:] = result

pprint.pprint(l)
Run Code Online (Sandbox Code Playgroud)