2012-06-20 13 views
5

Diciamo che ho una lista di dict. Definisco "duplicati" come qualsiasi dict due nella lista che hanno lo stesso valore per il campo "id" (anche se gli altri campi sono diversi). Come rimuovo questi duplicati.Come posso rimuovere dicts da un elenco con campi duplicati in python?

Un elenco esempio potrebbe essere qualcosa di simile:

[{'name': 'John' , 'id':1}, {'name': 'Mike' , 'id':5},{'name': 'Dan' , 'id':5}] 

In questo caso, 'Mike' e 'Dan' sarebbero duplicati, e uno di loro deve essere rimosso. Non importa quale.

+1

Questo è un duplicato di una domanda da ieri http://stackoverflow.com/questions/11092511/python-list-of-unique-dictionaries –

+0

E 'un po' diverso, dal momento che l'utente voleva rimuovere dicts che erano completamente identici, mentre volevo rimuovere i dit che erano identici in un singolo campo, anche se tutti gli altri campi erano diversi. – philpee2

+0

No, l'OP ha chiarito in un commento che questo è esattamente ciò che volevano fare. La soluzione è identica. Anche il nome del campo è lo stesso –

risposta

11

Scaricarli in un altro dizionario, quindi estrarli dopo.

dict((x['id'], x) for x in L).values() 
2

La comprensione della seguente lista di funzioni dovrebbe risolvere il problema.

def f(seq): 
    s = set() 
    return [x for x in seq if x['id'] not in s and not s.add(x['id'])] 
Problemi correlati