Как из словаря присваивать значения переменным?
Имеется словарь который импортируется в файл json, а при запуске программы информация должна считываться, и помещаться в отдельные переменные, словарь:
save_data = dict(one = VVU, two = oil, three = money, four = inventory, five = bullets, six = hp, seven = event_home, eight = bochka, nine = kan)
Если заглянуть в json файл, то будет:
{"one": 0, "two": 0, "three": 0, "four": ["Винчестер"], "five": 20, "six": 30, "seven": 0, "eight": 0, "nine": 0}
Как каждое значние ("...": 0) именно 0 записать в отдельную переменную?
import json
path = 'save.json'
f1 = open(path, 'r')
DO = json.loads(f1.read())
f1.close()
VVU = 1 значение (на данный момент 0)
oil = 2 значение
money = 3 значение
inventory = 4 значение (Винчестер)
bullets = 5 значение
hp = 6 значение
event_home = 7 значение
bochka = 8 значение
kan = 9 значение
Ответы (1 шт):
Соглашусь c @SergeyGornostaev, динамическая генерация переменных крайне не удачный вариант: отладка и поддержка кода со временем становятся крайне сложными, при неудачном стечении обстоятельств Вы можете переопределить любую переменную или зарезервированное слово.
Более корректный подход - использование словаря, либо собственного класса, который позволит реализовать требуемый функционал, при этом минимально повлияв на имеющуюся кодовую базу.
Однако, если необходимо на лету создавать переменные, то одним из вариантов является использование exec():
save_data = {"one" : "VVU", "two" : "oil", "three" : 'money'}
json_data = {"one": 0, "two": 0, "three": 0}
for key in save_data.keys():
exec("{0} = {1}".format(key, json_data[key]))
>>> one
Перед использованием настоятельно рекомендую ознакомиться с документацией, т.к. это достаточно не безопасная вещь.