Как из словаря удалить элемент внутри другого словаря?
Вот мой код:
shop = {'мучное': {'хлеб': 200},'молочные': {'сыр': 200}}
for section in shop.values():
print(section)
print(type(section))
section.pop('хлеб')
Traceback (most recent call last):
File "C:\Users\User\Desktop\python\test.py", line 5, in <module>
section.pop('хлеб')
KeyError: 'хлеб'
Вот сама ошибка. Допустим надо удалить "сыр" из раздела молочные. Сыр удаляется, но сам раздел остаётся. Помогите пожалуйста.
Ответы (2 шт):
Автор решения: CrazyElf
→ Ссылка
Примерно так:
shop = {'мучное': {'хлеб': 200},'молочные': {'сыр': 200}}
del_list = ['сыр']
for sk, section in list(shop.items()):
print(section)
print(type(section))
for k in set(section.keys()):
if k in del_list:
del section[k]
print('удалён товар', k)
if not section:
del shop[sk]
print('удалён раздел', sk)
Вывод:
{'хлеб': 200}
<class 'dict'>
{'сыр': 200}
<class 'dict'>
удалён товар сыр
удалён раздел молочные
Содержимое shop после выполнения кода:
{'мучное': {'хлеб': 200}}
Автор решения: Shamus Rezol
→ Ссылка
dict.pop
If key is not found and default argument is not specified - KeyError exception is raised
Замените section.pop('хлеб') на section.pop('хлеб', None).
Потом можно пройтись по всем разделам еще раз и удалить пустые.