Как я могу добавить верхний уровень в существующий словарь из значений словаря и таким образом сделать его вложенным? - PullRequest
1 голос
/ 29 марта 2020

Как добавить один словарь в другой словарь, создав вложенный словарь, используя существующий ключ в качестве ключа на верхнем уровне результирующего вложенного словаря?

Предположим, у меня есть что-то вроде этого:

dict1 = {'key1': 11, 'key2': 12, 'key_id':, 'id1'}
dict2 = {'key1': 21, 'key2': 22, 'key_id':, 'id2'}

и я хочу получить что-то вроде

dict_final = {'id1':{'key1': 11, 'key2': 12, 'key_id':, 'id1'}, 'id2': {'key1': 21, 'key2': 22, 'key_id':, 'id2'}}

dict1.update(dict2) перезапишет только значения в dict1; Как я могу сказать python добавить новый верхний уровень в существующий словарь?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 29 марта 2020

Самый простой способ такой:

dict_final = {
    dict1["key_id"]: dict1,
    dict2["key_id"]: dict2,
}

Или добавьте их по одному:

dict_final = {}
dict_final[dict1["key_id"]] = dict1
dict_final[dict2["key_id"]] = dict2
1 голос
/ 29 марта 2020

Вы можете использовать dict, чтобы объединить список кортежей вместе. Имея это в виду, вы можете использовать zip + dict

dict1 = {'key1': 11, 'key2': 12, 'key_id': 'id1'}
dict2 = {'key1': 21, 'key2': 22, 'key_id': 'id2'}


outer_keys = ['id1', 'id2'];
dicts = [dict1, dict2]

d = dict(zip(outer_keys, dicts))
print(dict(d))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...