2012-02-28 14 views
8

tengo una lista de diccionarios en PythonPython - crear el diccionario de la lista de diccionarios

[ 
{'id':'1', 'name': 'test 1', 'slug': 'test1'}, 
{'id':'2', 'name': 'test 2', 'slug': 'test2'}, 
{'id':'3', 'name': 'test 3', 'slug': 'test3'}, 
{'id':'4', 'name': 'test 4', 'slug': 'test4'}, 
{'id':'5', 'name': 'test 5', 'slug': 'test4'} 
] 

quiero convertir esta lista en un diccionario de diccionarios con ser la clave slug. Si el slug está duplicado como en el ejemplo anterior, simplemente debe ignorarlo. Esto puede ser copiando sobre la otra entrada o no molestando reiniciarlo, no me molesta, ya que debería ser el mismo.

{ 
'test1': {'id':'1', 'name': 'test 1', 'slug': 'test1'}, 
'test2': {'id':'2', 'name': 'test 2', 'slug': 'test2'}, 
'test3': {'id':'3', 'name': 'test 3', 'slug': 'test3'}, 
'test4': {'id':'4', 'name': 'test 4', 'slug': 'test4'} 
} 

¿Cuál es la mejor manera de lograrlo?

Respuesta

20

Asumiendo que su lista se llama a, puede utilizar

my_dict = {d["slug"]: d for d in a} 

En versiones antiguas de Python de 2,7, puede utilizar

my_dict = dict((d["slug"], d) for d in a) 

Esto eliminará de forma implícita duplicados (en concreto utilizando la última elemento con una clave dada).

Cuestiones relacionadas