замена значений во вложенном словаре python
есть исходные данные (словарь с вложенными словарями):
dict = {
"Shop1": {
"apple": {"Can_buy": "allow", "amount": 5, "Can_sell": "restrict"},
"orange": {"Can_buy": "restrict", "amount": 4, "Can_sell": "allow"},
},
"Shop2": {"Melon": {"Can_buy": "allow", "amount": 61, "Can_sell": "restrict"}},
}
Таким образом это словарь, ключи которого - магазины, а в значениях - словари. Уже в эти словарях ключ - название фрукта, а в значении этого ключа словарь с данными о возможности купить, количестве и возможности продать.
Задача в том, чтобы заменить значения 'allow' и 'restrict' на булевые True и False соответственно.
Наверное возможно это сделать тройным вложенным циклом и заменой значения по условию, но пока не знаю как именно
Буду очень рад вашей помощи
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
Если лениво разбираться с вложениями, то можно просто перевести данные в json, потом заменить строки и вернуть данные обратно в объект:
import json
import pprint
data = {'Shop1': {'apple': {'Can_buy': 'allow', 'Can_sell': 'restrict', 'amount': 5},
'orange': {'Can_buy': 'restrict', 'Can_sell': 'allow', 'amount': 4}},
'Shop2': {'Melon': {'Can_buy': 'allow', 'Can_sell': 'restrict', 'amount': 61}}}
new_data = json.loads(json.dumps(data).replace('"allow"', 'true').replace('"restrict"', 'false'))
pprint.pprint(new_data)
Вывод:
{'Shop1': {'apple': {'Can_buy': True, 'Can_sell': False, 'amount': 5},
'orange': {'Can_buy': False, 'Can_sell': True, 'amount': 4}},
'Shop2': {'Melon': {'Can_buy': True, 'Can_sell': False, 'amount': 61}}}