如何删除list中重复的dict
例如a = [{'name':zhang, 'age':18}, {'name':zhang, 'age':18}, {'name':li, 'age':18}]
前两个重复了,如何删除一个 from itertools import *
l = [{'name':zhang, 'age':18}, {'name':zhang, 'age':18}, {'name':li, 'age':18}]
for d1, d2 in combinations(l, 2):
a = list(set(d1.items())^set(d2.items()))
if len(a) == 0:
i = l.index(d1)
l.pop(i) 楼主是不是应该写成
a = [{'name':‘zhang’, 'age':18}, {'name':‘zhang’, 'age':18}, {'name':‘li’, 'age':18}]
本帖最后由 tomer 于 2014-11-07 12:01 编辑
a = [{'name':'zhang', 'age':18}, {'name':'zhang', 'age':18}, {'name':'li', 'age':18},{'name':'zhang', 'age':18}]
for i in range(0,len(a)-1):
for j in range(1,len(a)-1):
if a==a:
a.pop(j)
print(a)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
l = [{'name':'zhang', 'age':18}, {'name':'zhang', 'age':18}, {'name':'li', 'age':18}]
print )]
从这里抄袭来的:emn35:
http://stackoverflow.com/questions/9427163/remove-duplicate-dict-in-list-in-python 本帖最后由 tomer 于 2014-11-07 14:23 编辑
# more file.py
a = [{'name':'zhang', 'age':18}, {'name':'zhang', 'age':18}, {3},{'name':'li', 'age':18},{'name':'zhang', 'age':18},{3},{8}]
b=[]
j=0
for i in range(1,len(a)):
if a==a:
b.append(a)
j=j+1
for key in b:
a.remove(key)
print(a)
# python file.py
[{'name': 'li', 'age': 18}, {'name': 'zhang', 'age': 18}, {3}, {8}]
>>> b=[{3},{8}]
>>> b
[{3}, {8}]
>>> for i in b:print(type(i))
<class 'set'>
<class 'set'>
>>> c={3}
>>> c
{3}
>>> type(c)
<class 'set'>
>>> d=[{'name':'zhang','age':18},{3},{8}]
>>> d
[{'name': 'zhang', 'age': 18}, {3}, {8}]
>>> type(d)
<class 'list'>
>>> for i in d:print(type(i))
<class 'dict'>
<class 'set'>
<class 'set'>
>>> a = [{'name':'zhang', 'age':18}, {'name':'zhang', 'age':18}, {'name':'li', 'age':18}]
list=[]
print(list) 本帖最后由 kyrie_liu 于 2014-11-12 15:47 编辑
def delRepElem(List):
if List:
List.sort()
Last = List[-1]
for i in range(len(List)-2,-1,-1):
if Last == List [ i ]:
del List [ i ]
else:
Last = List [ i ]
return List
页:
[1]