Python & JSON |无法使用索引访问字典
Python & JSON | Can't access dictionary using an index
我有一个如下所示的程序:
import json
import requests
article_name = "BT Centre"
article_api_url = "https://en.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro=&explaintext=&titles={}".format(article_name)
called_data = requests.get(article_api_url)
formatted_data = called_data.json()
print(formatted_data)
pages = formatted_data["query"]["pages"]
print(pages)
first_page = pages[0]["extract"]
print(first_page)
对于第一个打印语句,它打印整个 JSON,它 returns 这个:
{
'batchcomplete': '',
'query':{
'pages':{
'18107207':{
'pageid': 18107207,
'ns': 0,
'title':'BT Centre',
'extract': "The BT Centre is the global headquarters and registered office of BT Group..."
}
}
}
}
当我尝试使用 first_page
变量访问“提取”数据时,它 returns:
Traceback (most recent call last):
File "wiki_json_printer.py", line 15, in <module>
first_page = pages[0]["extract"]
KeyError: 0
问题是,我无法将 first_page
设置为 pages["18107207"]["extract"]
,因为每篇文章的页面 ID 都会更改。
编辑:来自 Ann Zen 的解决方案有效:
You can use a for loop to loop through the keys of the pages
dictionary, and detect which one is the ID via the str.isdigit()
method:
for key in pages:
if key.isdigit():
print(pages[key]["extract"])
可以用for
循环遍历pages
字典的key,通过str.isdigit()
方法检测ID是哪个:
for key in pages:
if key.isdigit():
print(pages[key]["extract"])
您可以在字典的迭代器上使用 next
来查找第一个键:
...
key = next(iter(pages))
first_page = pages[key]["extract"]
...
pages
是字典而不是 list
你不能通过索引 select 它,使用它作为键
print(pages['18107207']['extract'])
当然下面会起作用,因为 key
是 18107207
for key in pages:
print(pages[key]["extract"])
我有一个如下所示的程序:
import json
import requests
article_name = "BT Centre"
article_api_url = "https://en.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro=&explaintext=&titles={}".format(article_name)
called_data = requests.get(article_api_url)
formatted_data = called_data.json()
print(formatted_data)
pages = formatted_data["query"]["pages"]
print(pages)
first_page = pages[0]["extract"]
print(first_page)
对于第一个打印语句,它打印整个 JSON,它 returns 这个:
{
'batchcomplete': '',
'query':{
'pages':{
'18107207':{
'pageid': 18107207,
'ns': 0,
'title':'BT Centre',
'extract': "The BT Centre is the global headquarters and registered office of BT Group..."
}
}
}
}
当我尝试使用 first_page
变量访问“提取”数据时,它 returns:
Traceback (most recent call last):
File "wiki_json_printer.py", line 15, in <module>
first_page = pages[0]["extract"]
KeyError: 0
问题是,我无法将 first_page
设置为 pages["18107207"]["extract"]
,因为每篇文章的页面 ID 都会更改。
编辑:来自 Ann Zen 的解决方案有效:
You can use a for loop to loop through the keys of the pages dictionary, and detect which one is the ID via the str.isdigit() method:
for key in pages: if key.isdigit(): print(pages[key]["extract"])
可以用for
循环遍历pages
字典的key,通过str.isdigit()
方法检测ID是哪个:
for key in pages:
if key.isdigit():
print(pages[key]["extract"])
您可以在字典的迭代器上使用 next
来查找第一个键:
...
key = next(iter(pages))
first_page = pages[key]["extract"]
...
pages
是字典而不是 list
你不能通过索引 select 它,使用它作为键
print(pages['18107207']['extract'])
当然下面会起作用,因为 key
是 18107207
for key in pages:
print(pages[key]["extract"])