Ищете более простой способ Pythoni c, чтобы объединить полный словари в один? - PullRequest
0 голосов
/ 25 марта 2020

У меня есть список с кучей словарей, которые я пытаюсь объединить в один

Похоже на это ...

[{'name':'name', 'value':'john'}, {'name':'sex', 'value':'male'}, {'name':'color', 'value':'blue'}, {'name':'car', 'value':'toyota'}, {'name':'job', 'value':'cashier'}]

Я пытаюсь объединить их все в один словарь, так что значение имени является ключом, а значение является значением. Прямо сейчас я делаю что-то вроде этого, и это прекрасно работает, но я знаю, что есть более простой способ

keys = []
vals = []

for item in a:
    if item['name']:
        keys.append(item['name'])

    if item['value']:
        vals.append(item['value'])

md = dict(zip(keys,vals))

Любое руководство будет оценено ... спасибо

Ответы [ 4 ]

5 голосов
/ 25 марта 2020

Вы можете использовать словесное понимание.

new = {i['name']:i['value'] for i in a}
3 голосов
/ 25 марта 2020

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

new_dict = { dict['name'] : dict['value'] for dict in dict_list}
1 голос
/ 25 марта 2020

Вы можете напрямую использовать dict.values() для своего конкретного c случая, так как ключи и значения доступны в порядке:

dict(d.values() for d in a)
0 голосов
/ 25 марта 2020

Вы также можете сделать что-то подобное.

input_dict_list = [{'name':'name', 'value':'john'}, {'name':'sex', 'value':'male'}, {'name':'color', 'value':'blue'}, {'name':'car', 'value':'toyota'}, {'name':'job', 'value':'cashier'}]

out_put_dict = {}
for input_dict in input_dict_list:
    out_put_dict[input_dict['name']] = input_dict['value']

print(out_put_dict)
...