2012-02-28 3 views
8

У меня есть список словарей в PythonPython - создать словарь из списка словарей

[ 
{'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'} 
] 

Я хочу, чтобы превратить этот список в словарь словарей с ключом является slug. Если пул дублируется, как в приведенном выше примере, он должен просто игнорировать его. Это может быть либо путем копирования поверх другой записи, либо не для того, чтобы сбросить ее, я не беспокоюсь, так как они должны быть одинаковыми.

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

Каков наилучший способ достичь этого?

ответ

20

Предположим, что ваш список называется a, вы можете использовать

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

В версиях Python старше 2.7, вы можете использовать

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

Это неявно удалить дубликаты (в частности, используя последний элемент с заданным ключом).

Смежные вопросы