我在动态创建 Python 字典路径以循环并验证值时遇到问题。这是我想做的:
使用 Requests 1.0 进行 API 调用并将 JSON 响应存储在字典中。
response = requests.get(path/to/file.json).json()
响应对象的格式如下:
{
"status": "OK",
"items": [
{
"name": "Name 1",
"id": 0,
"address":{
"city": "New York",
}
},
{
"name": "Name 2",
"id": 1,
"address":{
"city": "New York",
}
},
{
"name": "Name 3",
"id": 2,
"address":{
"city": "New York",
}
}]
}
将响应字典、字段和值发送到函数进行验证。该函数将获取响应对象并将字段条目附加到它以定义其路径,然后根据该值进行验证。所以理论上它会是:
response[field] = value
我为此编写的代码是:
def dynamic_assertion(response, field, value):
i = 0
stations = "response['items']"
count = len(response['items'])
while i < count:
path = '%s[%s]%s' % (stations, i, field)
path = path.strip("")
if path != value:
print type(path)
return False
i += 1
return True
dynamic_assertion(response, "['address']['city']", "New York")
我意识到,一旦我创建了路径字符串,它就不再是一个对象。如何以允许我保留响应对象并附加引用路径以遍历的方式创建它?这甚至可能吗?