Как объединить одинаковые ключи в словаре? Python
Всем привет! Python только начинаю познавать, вот и бьюсь 3ий день(
Есть список, примерно такого вида:
list = [['user', "data1"],
['last_name', ' data2'],
['first_name', ' data3'],
['address', ' data4'],
['email', ' data5'],
['email', ' data6'],
['address', ' data7'],
['address', ' data8'],
['email', ' data9'],
['some', ' data10'],
['more', ' data11']]
Как объединить по ключам? (п.с. они могут быть разные). В конечном итоге, хотелось бы получить json вида:
id = id
[
{
"id": {
"user": 'data1',
"last_name": 'data2',
"first_name": "data3",
"address": {
0: 'data4',
1: 'data7',
2: 'data8'
},
"email": {
0: 'data5',
1: 'data6',
2: 'data9'
},
"some": 'data9',
"more": 'data10'
}
}
]
Пробовал так:
resultdict = {}
for key, value in list:
try:
resultdict[key] += value
except KeyError:
resultdict[key] = value
Но это лишь добавляет значение к ключу, а надо б список из значений..
?
Ответы (1 шт):
Автор решения: day383
→ Ссылка
По списку добавляются ключи в словарь. Если ключ новый, то в значение добавляется строка. Если ключ повторяется, то значение переделывается в словарь.
dct = {}
for k, v in list:
if k not in dct:
dct[k] = v
else:
if type(dct[k]) != dict:
dct[k] = {0: dct[k]}
dct[k][len(dct[k])] = v
import json
print(json.dumps(dct, indent=4))
Вывод:
{
"user": "data1",
"last_name": " data2",
"first_name": " data3",
"address": {
"0": " data4",
"1": " data7",
"2": " data8"
},
"email": {
"0": " data5",
"1": " data6",
"2": " data9"
},
"some": " data10",
"more": " data11"
}