Как сделать ребенка списка стать переменной в Python
-
28-10-2019 - |
Вопрос
Я пытаюсь сделать Интернет только с помощью CouchDB и CouchApp ...
Но по какой -то причине мне нужен внешний процесс с помощью Python ..
А теперь я застрял, как обрабатывать переменную пост в Python ...
Я читаю это(и это работает) и это...
Но я хочу это так:
>>> a = {"success":1,"data":{"var1":1,"var2":2,"var3":3}}
>>> a["data"]["var2"]
2
>>> var2
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
var2
NameError: name 'var2' is not defined
>>> for key, value in a["data"].items():
print (key, value)
('var1', 1)
('var3', 3)
('var2', 2)
>>> var1
Traceback (most recent call last):
File "<pyshell#6>", line 1, in <module>
var1
NameError: name 'var1' is not defined
>>>
Я хочу, когда я набираю var2, он возвращает 2
другим словом, как заставить вложенного дочернего объекта стать переменной, когда я не знаю, сколько len
Данные .. это потому, что на внешнем питоне, как обрабатывать переменную после этого req["form"]["var1"]
Решение
Вы должны попытаться обновить свой локальный (не рекомендуемый) или глобальный Dictionnary с помощью Data Dicknary
>>> a = {"success":1,"data":{"var1":1,"var2":2,"var3":3}}
>>> a["data"]["var2"]
2
>>> locals().update(a["data"])
>>> var2
2
или же
>>> globals().update(a["data"])
>>> var2
2
Чтобы сделать это безопасным способом, вы должны доверять источнику данных, с которыми вы обновляете свой словар Globals, чтобы избежать замены Custrin или других забавных инъекций кода.
Другие советы
Может использовать оператор Python «EXEC» для создания строки, а затем динамически выполнить ее.
a = {"success":1,"data":{"var1":1,"var2":2,"var3":3}}
for key, value in a["data"].items():
exec('%s=%s' % (key, value, ))
print 'var1:', var1
print 'var2:', var2
print 'var3:', var3
Чтобы сделать это безопасно, я бы предложил что -то вроде:
allowed_variables = ('var1', 'var2', 'var3')
for k,v in a["data"].iteritems():
if k in allowed_variables:
locals.update({k:v})