我最近开始学习编码,我在python中查询了一些for循环语法。我已经看过codecademy上的NPR API模块(我意识到,这不是一个学习任何东西的好环境),并且呈现for循环的方式让我感到困惑。有问题的部分:
from urllib2 import urlopen
from json import load
url = "http://api.npr.org/query?apiKey="
key = "API_KEY"
url += key
url += "&numResults=3&format=json&id="
npr_id = raw_input("Which NPR ID do you want to query?")
url += npr_id
print url
response = urlopen(url)
json_obj = load(response)
for story in json_obj["list"]["story"]:
print story["title"]["$text"]
我对
感到困惑for story in json_obj["list"]["story"]:
print story["title"]["$text"]
行。它是某种嵌套列表吗?
答案 0 :(得分:2)
将json对象视为字典。
方括号表示法是如何访问json对象的。
基本上json_obj["list"]["story"]
是一个带有字典数组的嵌套字典,如果密钥名称为json_obj["list"]["stories"]
则更有意义。
json_obj
有一个键“列表”,json_obj["list"]
的值有一个“故事”键,每个故事都有一个“标题”。
这里有一个解析json的例子:Parsing values from a JSON file using Python?
这是json对象根据你编写它的方式看起来的结构:
json_obj = {
'list': {
# this is the array that is being iterated
'story': [
{'title': {
'$text': 'some title1'
}
},
{'title': {
'$text': 'some title2'
}
},
{'title': {
'$text': 'some title3'
}
},
],
},
}
所以for
循环:
for story in json_obj["list"]["story"]:
# each iteration story become this
# story = {'title': {'$text': 'some title2'}}
print story["title"]["$text"]
类似于:
print json_obj['list']['story'][0]['title']['$text']
print json_obj['list']['story'][1]['title']['$text']
print json_obj['list']['story'][2]['title']['$text']