Разобрать список списков в список словаря (используя функцию Dict)

Я новичок в изучении Python, и у меня возникли проблемы с анализом моего списка списка в списке словаря, я могу объединить только отдельный список в словарь, но не могу сделать это для списка списков. В основном у меня есть данные ниже:

mylist = [[john, type A, 40], [Barbara, type O, 22]]

Я сделал функцию def для сопоставления списка с ключом моего словаря, но только для отдельного списка:

dict_key = {'name': John, 'blood type': type O, 'Barbara': 8600}

Что я пытаюсь сделать, так это перебрать все записи в моем списке, проанализировать каждый список и превратить его в список словаря. Таким образом, конечный результат будет выглядеть так:

list_dict = [{'name': John, 'blood type': type O, 'age': 40}, {'name': Barbara, 'blood type': type O, 'age': 22}]

Любая помощь будет высоко оценена, так долго застрял на этом! Спасибо.


person Esar    schedule 01.12.2020    source источник
comment
Покажи свою функцию.   -  person Shadowcoder    schedule 01.12.2020


Ответы (2)


In [85]: mylist = [['john', 'type A', 40], ['Barbara', 'type O', 22]]                                                                                                                                                                                                         

In [86]: headers = ['name', 'blood type', 'age']                                                                                                                                                                                                                              

In [87]: answer = []                                                                                                                                                                                                                                                          

In [88]: for record in mylist: 
    ...:     d = {} 
    ...:     for header,value in zip(headers, record): 
    ...:         d[header] = value 
    ...:     answer.append(d) 
    ...:                                                                                                                                                                                                                                                                      

In [89]: answer                                                                                                                                                                                                                                                               
Out[89]: 
[{'name': 'john', 'blood type': 'type A', 'age': 40},
 {'name': 'Barbara', 'blood type': 'type O', 'age': 22}]

Конечно, для этого есть однострочник:

In [90]: [dict(zip(headers, record)) for record in mylist]                                                                                                                                                                                                                    
Out[90]: 
[{'name': 'john', 'blood type': 'type A', 'age': 40},
 {'name': 'Barbara', 'blood type': 'type O', 'age': 22}]
person inspectorG4dget    schedule 01.12.2020
comment
Большое спасибо, я только что попробовал, очень элегантное решение. Довольно смущен, я пытался какое-то время и все еще не мог получить ответ самостоятельно, но все равно спасибо! - person Esar; 01.12.2020
comment
@Esar: не кори себя. Это процесс обучения. Вы новичок; Я занимаюсь этим уже более 10 лет. Продолжайте в том же духе, и вы обязательно добьетесь своего - person inspectorG4dget; 01.12.2020
comment
Спасибо за добрые слова, будем стараться :) - person Esar; 01.12.2020

Давайте попробуем список и внутреннее понимание dict:

list_dict = [{x:y for x,y in zip(r,['name', 'blood type', 'age'])} for r in mylist]
person programmer365    schedule 01.12.2020