无法访问 Python 的请求响应中嵌套的 JSON 元素
Unable to access nested JSON elements in Python's request reponse
我一直在尝试调用 API GET 请求以从在线 SIM 卡提供商处获取国家/地区列表。我正在尝试获取所有国家/地区的列表并从中访问某些元素。
请求结果如:
{
"afghanistan": {
"iso": {
"af": 1
},
"prefix": {
"+93": 1
},
"text_en": "Afghanistan",
"text_ru": "Афганистан",
[...]
"albania": {
[...]
}
我的问题是我无法找到循环遍历数组(阿富汗、阿尔巴尼亚、[...])和访问 text_en
键的正确方法。
根据我在网上找到的例子/人们的问题,在我尝试过的所有方法中,这是(不起作用)我认为应该起作用的方法:
countries = requests.get("(api_link)").json()
for country in countries:
print(country['text_en'])
给我以下错误:TypeError: string indices must be integers
因为我的数组没有像我在网上找到的大多数例子那样命名(数组的根被命名为例如 list
并且代码看起来像:
for country in countries['list']:
print(country['list']['text_en'])
为什么我不能像第一个例子那样做?我想到的是我的 JSON 没有正确加载(因此 TypeError: string indices must be integers
),我在数组上循环的方式(对于 X 中的 i 或使用 JSON 函数?)或者可能是因为上面提到的“问题”(没有“根”数组名称)?
countries
是字典。 for country in countries
因此循环遍历字典中的键,如果您尝试 country['text_en']
,您试图用另一个字符串索引第一个键(字符串),这是行不通的。
类似 countries['afghanistan']['text_en']
的计算结果为 'Afghanistan'
。
要打印所有这些:
for key, data in countries.items():
print(key, data['text_en'])
这是有效的,因为它遍历项目,从字典中产生键和值的元组。
另一种方法,更接近您的预期:
for key in countries:
print(key, countries[key]['text_en'])
这可能效率有点低,因为您需要一次使用其键查找每个元素,而第一个循环按顺序访问所有元素,但可读的代码也很有价值 - 在最起码,也许它有助于了解字典的工作原理。
我一直在尝试调用 API GET 请求以从在线 SIM 卡提供商处获取国家/地区列表。我正在尝试获取所有国家/地区的列表并从中访问某些元素。
请求结果如:
{
"afghanistan": {
"iso": {
"af": 1
},
"prefix": {
"+93": 1
},
"text_en": "Afghanistan",
"text_ru": "Афганистан",
[...]
"albania": {
[...]
}
我的问题是我无法找到循环遍历数组(阿富汗、阿尔巴尼亚、[...])和访问 text_en
键的正确方法。
根据我在网上找到的例子/人们的问题,在我尝试过的所有方法中,这是(不起作用)我认为应该起作用的方法:
countries = requests.get("(api_link)").json()
for country in countries:
print(country['text_en'])
给我以下错误:TypeError: string indices must be integers
因为我的数组没有像我在网上找到的大多数例子那样命名(数组的根被命名为例如 list
并且代码看起来像:
for country in countries['list']:
print(country['list']['text_en'])
为什么我不能像第一个例子那样做?我想到的是我的 JSON 没有正确加载(因此 TypeError: string indices must be integers
),我在数组上循环的方式(对于 X 中的 i 或使用 JSON 函数?)或者可能是因为上面提到的“问题”(没有“根”数组名称)?
countries
是字典。 for country in countries
因此循环遍历字典中的键,如果您尝试 country['text_en']
,您试图用另一个字符串索引第一个键(字符串),这是行不通的。
类似 countries['afghanistan']['text_en']
的计算结果为 'Afghanistan'
。
要打印所有这些:
for key, data in countries.items():
print(key, data['text_en'])
这是有效的,因为它遍历项目,从字典中产生键和值的元组。
另一种方法,更接近您的预期:
for key in countries:
print(key, countries[key]['text_en'])
这可能效率有点低,因为您需要一次使用其键查找每个元素,而第一个循环按顺序访问所有元素,但可读的代码也很有价值 - 在最起码,也许它有助于了解字典的工作原理。