Как создать словарь из многомерного списка

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

id1:
    name: ....
    age: ....
id2:
    name: ....
    age: ....
id3:
    name: ....
    age: ....

Я делал таким образом:

from operator import itemgetter

pe = [{'name': 'Reuven', 'age': 20, 'id': 'id1'}, 
      {'name': 'Donald', 'age': 30, 'id': 'id2'}, 
      {'name': 'Vladimir', 'age': 10, 'id': 'id3'} ] 

for p in sorted(pe, key=itemgetter('id')): 
    print(f'{p["id"]}:\n\t name: {p["name"]},\n\t age: {p["age"]}')

print('Список имен:')   
for s in pe:
    print(s["name"]) 
    
print()
print('Средний возраст - ', (pe[0]['age'] + pe[1]['age'] + pe[2]['age']) // len(pe))

Но мне сказали " Задание выполнено частично. Вместо преобразования списка с вложенными списками в словарь, был использован список словарей". А уже список преобразовать в словарь с ключами "name" и "age" и получить на выходе то, что в вопросе. Т.е. 'id1': {'name': 'Vlad', 'age': 22}, ...}.


Ответы (1 шт):

Автор решения: Vitalizzare ушел в монастырь

Исходя из предоставленного кода, предположу, что структура данных должна напоминать перечень записей о человеке с тремя фиксированными полями, где первое поле должно быть именем, второе - возрастом, третье - ID-кодом:

records = [
    ['Reuven', 20, 'id1'], 
    ['Donald', 30, 'id2'], 
    ['Vladimir', 10, 'id3']
]

Если это так, то искомый ответ - это распаковка такого вида:

answer = {record_id: {'name': name, 'age': age} for name, age, record_id in records}


# {'id1': {'name': 'Reuven', 'age': 20},
#  'id2': {'name': 'Donald', 'age': 30},
#  'id3': {'name': 'Vladimir', 'age': 10}}

А если нет, то вам нужно уточнить исходную структуру данных и трудность в работе с нею.

→ Ссылка