Как создать словарь из многомерного списка
Требуется создать список с вложенными списками и преобразовать в словарь, чтобы получилось:
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 шт):
Исходя из предоставленного кода, предположу, что структура данных должна напоминать перечень записей о человеке с тремя фиксированными полями, где первое поле должно быть именем, второе - возрастом, третье - 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}}
А если нет, то вам нужно уточнить исходную структуру данных и трудность в работе с нею.