Как объединить словари с одинаковыми ключами, без замены значений

Имеется список с данными пользователей, который я получаю из базы данных с помощью peewee:

users = [('ivan', 'ivanov'), ('petr', 'petrov'), ...]

и словарь, в который эти данные нужно занести типа:

{'name': value, 'lastname': value}

Хочется получить словарь на выходе:

{"users" : [{"name": "ivan", "lastname": "ivanov"}, {"name": "petr", "lastname": "petrov"}, ...]}

Либо можно ли как-то по-другому получать данные из бд с помощью peewee и более легким способом их записать в словарь чтобы потом использовать его в api?


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

Автор решения: SergFSM

такое выражение создаст вам список словарей:

[{'name':i, 'lastname':j} for i,j in users]
'''
[{'name': 'ivan', 'lastname': 'ivanov'},
 {'name': 'petr', 'lastname': 'petrov'},
 ...]
→ Ссылка
Автор решения: Zhenia Kviatkivskyi
 users = [('ivan', 'ivanov'), ('petr', 'petrov')]
 result = {"users" : []}

 for data in users:
     result['users'].append({'name':data[0],'lastname':data[1]})
 print('result: ', result)

 result:  {'users': [{'name': 'ivan', 'lastname': 'ivanov'}, {'name': 'petr', 'lastname': 'petrov'}]}
→ Ссылка
Автор решения: Andy Pavlov

Можно через map() в одну строку решить таким образом:

users = [('ivan', 'ivanov'), ('petr', 'petrov'), ]
out = {'users': list(map(lambda u: {'name': u[0], 'lastname': u[1]}, users))}

Вывод:

{'users': [{'name': 'ivan', 'lastname': 'ivanov'}, {'name': 'petr', 'lastname': 'petrov'}]}
→ Ссылка