ncist2011 发表于 2014-11-07 10:51

如何删除list中重复的dict

例如
a = [{'name':zhang, 'age':18}, {'name':zhang, 'age':18}, {'name':li, 'age':18}]
前两个重复了,如何删除一个

huangxiaohen 发表于 2014-11-07 11:05

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)

tomer 发表于 2014-11-07 11:17

楼主是不是应该写成
a = [{'name':‘zhang’, 'age':18}, {'name':‘zhang’, 'age':18}, {'name':‘li’, 'age':18}]

tomer 发表于 2014-11-07 11:35

本帖最后由 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)

whitelotus19 发表于 2014-11-07 12:03

#!/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:22

本帖最后由 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}]

whitelotus19 发表于 2014-11-07 15:36

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

llei623 发表于 2014-11-12 10:24

a = [{'name':'zhang', 'age':18}, {'name':'zhang', 'age':18}, {'name':'li', 'age':18}]
list=[]

print(list)

kyrie_liu 发表于 2014-11-12 15:42

本帖最后由 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]
查看完整版本: 如何删除list中重复的dict