Sto lavorando con un list
di dict
oggetti che assomiglia a questo (l'ordine degli oggetti è diversa):Dato un elenco di dizionari, come posso eliminare i duplicati di una chiave, e ordinare da un altro
[
{'name': 'Foo', 'score': 1},
{'name': 'Bar', 'score': 2},
{'name': 'Foo', 'score': 3},
{'name': 'Bar', 'score': 3},
{'name': 'Foo', 'score': 2},
{'name': 'Baz', 'score': 2},
{'name': 'Baz', 'score': 1},
{'name': 'Bar', 'score': 1}
]
Quello che voglio fare è rimuovere i nomi duplicati, mantenendo solo quello di ciascun nome che ha il più alto 'score'
. I risultati della lista di cui sopra sarebbero:
[
{'name': 'Baz', 'score': 2},
{'name': 'Foo', 'score': 3},
{'name': 'Bar', 'score': 3}
]
Non sono sicuro di quale modello da utilizzare qui (a parte un ciclo apparentemente idiota che continua a controllare se l'attuale dict
s' 'name'
è nella lista già e poi . Verificando la sua 'score'
è superiore al già esistente 'score'
Vai con il ciclo, è semplice e chiaro. –
È semplice e chiaro e facile da leggere in sei mesi quando è necessario cambiarlo "leggermente" –
+1 C'è qualcosa di magico in questa domanda in quanto ha suscitato un insieme di risposte diverse e interessanti. È affascinante quante soluzioni completamente diverse abbia questo problema. Lo considero un favorito a causa del ricco set di risposte (sto anche inviando a monte ogni risposta che ha una soluzione creativa o interessante). –