Python - конвертировать список в dict

У меня есть следующий список:

l = [('Alice',12),('Bob',10),('Celine',11)]

Я хочу получить следующее dict (как правильно указано в комментарии ниже, это не диктат. На самом деле, я просто хочу список диктов):

[
    {'name':'Alice','age':12},
    {'name':'Bob','age':10},
    {'name':'Celine','age':11}
]

Есть ли способ, которым я могу использовать dict comprehension для достижения этой цели?

3 ответа

Решение

Вы можете создать список словарей таким образом

d = [{'name': x[0], 'age': x[1]} for x in l]

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

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

Вы можете сделать один со словарем внутри понимания списка следующим образом:

[{'name': name, 'age': age} for name, age in l]

Также обратите внимание, что, хотя сами словари не упорядочены, этот список словарей сохранит порядок списка l,

Вы можете сделать функцию, чтобы сделать это

def list2dict(list_):
    changed=[{'name':i[0],'age':i[1]} for i in list_]
    return changed

тогда просто позвони

l=[('Alice',12) , ('Bob',10) , ('Celine',11)]
d=list2dict(l)

Протестировано в python 3.4.4

Другие вопросы по тегам