有如下列表
li = [{'a': 1}, {'b': 2}, {'a': 1}]
如果采用set的去重方式忿薇,則會報錯
li = list(set(li))
>>>TypeError: unhashable type: 'dict'
可以用下面的方法:
第一種:reduce
def deleteDuplicate(li):
func = lambda x, y: x if y in x else x + [y]
li = reduce(func, [[], ] + li)
return li
>>> deleteDuplicate(li)
>>>[{'a': 1}, {'b': 2}]
第二種:
def deleteDuplicate(li):
temp_list = list(set([str(i) for i in li]))
li=[eval(i) for i in temp_list]
return li
>>> deleteDuplicate(li)
>>>[{'a': 1}, {'b': 2}]
第三種:
>>>li = [dict(t) for t in set([tuple(d.items()) for d in li])]
>>>li
>>>[{'a': 1}, {'b': 2}]
建議使用第三種裙椭,因為速度更加快,經(jīng)過測試相同的數(shù)據(jù)署浩,第三種方法速度比第一種的10倍揉燃。