Как добавить данные в словарь с новым ключом?

Есть словарь. В него пытаюсь добавить примерно похожие данные, но с разными ключами:

d = {}
d['category', 'key:911', 'title:lk'] = {'#41': {'title': 'абетка', 'description': 'нет описания', 'price': '100'}}
d['category', 'key:911', 'title:lk'] = {'#42': {'title': 'абетка', 'description': 'нет описания', 'price': '100'}}

В первой строке у меня в качестве ключа #41, в другой строке ключ на единицу больше, чем предыдущий, а именно #42.

Как я могу добавить данные, чтобы после указания #41 в словаре, я мог получить {'title': 'абетка', 'description': 'нет описания', 'price': '100'}} и при указании #42 уже другие данные, Примечание: данные были написаны в качестве примера, чтобы решить текущую проблему.

При попытке вывести словарь c необходимыми данными с помощью кода:

products_keys = d['category', 'key:911', 'title:lk']
print(products_keys)

Получаю только:

{'#42': {'title': 'абетка', 'description': 'нет описания', 'price': '100'}}

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

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

В данной строке d['category', 'key:911', 'title:lk'] вы в словарь d записываете ключ ['category', 'key:911', 'title:lk'], следовательно если вы будете в этот ключ добавлять значения ключа, то сохранится последний из записанных значений в ключе. Как пример, вы можете записать пустой список в значение ключа и добавлять в список значения.

d = {}

d['category', 'key:911', 'title:lk'] = []

d['category', 'key:911', 'title:lk'].append({'#41': {'title': 'абетка', 'description': 'нет описания', 'price': '100'}})

d['category', 'key:911', 'title:lk'].append({'#40': {'title': 'абетка', 'description': 'нет описания', 'price': '100'}})

for i in d['category', 'key:911', 'title:lk']:
    print(i) 

Можно через словарь:


d = {}

d['category', 'key:911', 'title:lk'] = {}

d['category', 'key:911', 'title:lk'].update([('#41', {'title': 'абетка', 'description': 'нет описания', 'price': '100'})])

d['category', 'key:911', 'title:lk'].update([('#40', {'title': 'абетка', 'description': 'нет описания', 'price': '100'})])

print(d['category', 'key:911', 'title:lk']['#40'])
→ Ссылка
Автор решения: MaxU

Судя по уточняющему вопросу в комментариях, вам может лучше подойти такое решение:

category = 'category', 'key:911', 'title:lk'

d = {}               # словарь в который будут применены изменения
d[category] = {}
d[category]['#41'] = {'title': 'абетка', 'description': 'нет описания', 'price': '100'}
d[category]['#42'] = {'title': 'абетка', 'description': 'нет описания', 'price': '100'}
→ Ссылка