Как объединить словари с одинаковыми ключами, без замены значений
Имеется список с данными пользователей, который я получаю из базы данных с помощью 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'}]}