Обновление значения в словаре или сохранение множества словарей в одном словаре

Рейтинг: 1Ответов: 1Опубликовано: 06.04.2023

Ребята, можете помочь с пониманием - сама не могу разобраться. Хочу сохранять информацию полученную от пользователя в один файл через Shelve по нескольким сферам деятельности: Спорт, Наука и т.д. У меня получается общий словарь с этими ключами, в которых должны быть значения в виде словарей. Вот так:

database['Спорт'] = {'Теннис': ['Майкл', 'Канада', 'М', 1090]}

Потом я каждую категорию вытаскиваю в Treeview. Проблема в том, что я не понимаю, как обновлять именно ключ и добавлять в него несколько словарей. То есть пользователь вносит информацию - создаётся словарь и добавляется в существующий ключ. Помогите, как это возможно? То что есть сейчас - это все время замена уже существующего значения у ключа... Руки опускаются...

Ответы

▲ 2Принят

Вам нужно использовать словарь, где в качестве значения используется список словарей. Доступ к отдельному словарю - по индексу. Альтернативный вариант - словарь словарей, тогда доступ к отдельному словарю - по ключу.

dct: dict = dict(list())
dct['Sport'] = [
    {'Теннис': ['Майкл', 'Канада', 'М', 1090]},
]
dct['Sport'] .append({'Шашки': ['Си', 'Китай', 'М', 1070]})
print(dct) # {'Sport': [{'Теннис': ['Майкл', 'Канада', 'М', 1090]}, {'Шашки': ['Си', 'Китай', 'М', 1070]}]}
print(dct['Sport'][1]) # {'Шашки': ['Си', 'Китай', 'М', 1070]}