从列表中删除字典的副本

时间:2017-11-25 17:49:29

标签: python list dictionary

如何删除密钥" name"

的副本
[  
   {  
      'items':[  
         {  
            '$oid':'5a192d0590866ecc5c1f1683'
         }
      ],
      'image':'image12',
      '_id':{  
         '$oid':'5a106f7490866e25ddf70cef'
      },
      'name':'Amala',
      'store':{  
         '$oid':'5a0a10ad90866e5abae59470'
      }
   },
   {  
      'items':[  
         {  
            '$oid':'5a192d2890866ecc5c1f1684'
         }
      ],
      'image':'fourth shit',
      '_id':{  
         '$oid':'5a106fa190866e25ddf70cf0'
      },
      'name':'Amala',
      'store':{  
         '$oid':'5a0a10ad90866e5abae59470'
      }
   }
]

我想用相同的键"名称"

将字典拼凑在一起

这是我试过的

b = []

for q in data:
    if len(data) == 0:
        b.append(q)
    else:
        for y in b:
            if q['name'] != y['name']:
                b.append(q)

但在尝试此操作后,b列表并未返回我想要的唯一字典

1 个答案:

答案 0 :(得分:1)

循环组装列表,如果找到具有不同名称的dict,则添加当前的dict。逻辑应该是不同的:只有在找不到具有相同名称的逻辑时才添加它!

话虽这么说,你应该保留一组看到过的名字。这将使检查更具性能:

b, seen = [], set()

for q in data:
    if q['name'] not in seen:
        b.append(q)
        seen.add(q['name'])