Loads() 输出列表而不是对象
Loads() Outputting a List Instead of an Object
我正在尝试制作一个简单的 python 程序来输出一个随机单词。
我正在使用 requests
库从 this API 中提取数据。然后,我使用 json
库中的 loads()
函数将字符串转换为 python 对象。
出于某种原因,我得到的是 list 输出而不是 object 输出,这会导致错误。
import json
import requests
url = "https://random-words-api.vercel.app/word"
r = requests.get(url)
data = json.loads(r.text)
print(type(r.text))
print(type(data))
print(data)
word = data['word']
type(r.text)
的输出是 <class 'str'>
,这是正确的。
type(data)
的输出是 <class 'list'>
,这是不正确的!它不应该 return 一个 python 对象吗?
print(data)
的输出只是随机单词、定义、发音等。
word = data['word']
的输出是:
word = data['word'] TypeError: list indices must be integers or slices, not str
那么为什么我从 loads()
得到一个列表而不是一个对象?
此外,如果我的问题在某些方面可以更清楚,请告诉我以供将来参考。
[
{
"word": "Astichous",
"definition": "Not in rows ",
"pronunciation": "Astikshous"
}
]
api 正在 return 字典列表,看起来 json.loads 工作正常。你可以做 word = data[0]['word'] 因为你是当前的例子
如果你想让它像“word = data['word']”一样可调用,你需要 api 到 return 这个:
{
"word": "Astichous",
"definition": "Not in rows ",
"pronunciation": "Astikshous"
}
我正在尝试制作一个简单的 python 程序来输出一个随机单词。
我正在使用 requests
库从 this API 中提取数据。然后,我使用 json
库中的 loads()
函数将字符串转换为 python 对象。
出于某种原因,我得到的是 list 输出而不是 object 输出,这会导致错误。
import json
import requests
url = "https://random-words-api.vercel.app/word"
r = requests.get(url)
data = json.loads(r.text)
print(type(r.text))
print(type(data))
print(data)
word = data['word']
type(r.text)
的输出是 <class 'str'>
,这是正确的。
type(data)
的输出是 <class 'list'>
,这是不正确的!它不应该 return 一个 python 对象吗?
print(data)
的输出只是随机单词、定义、发音等。
word = data['word']
的输出是:
word = data['word'] TypeError: list indices must be integers or slices, not str
那么为什么我从 loads()
得到一个列表而不是一个对象?
此外,如果我的问题在某些方面可以更清楚,请告诉我以供将来参考。
[
{
"word": "Astichous",
"definition": "Not in rows ",
"pronunciation": "Astikshous"
}
]
api 正在 return 字典列表,看起来 json.loads 工作正常。你可以做 word = data[0]['word'] 因为你是当前的例子
如果你想让它像“word = data['word']”一样可调用,你需要 api 到 return 这个:
{
"word": "Astichous",
"definition": "Not in rows ",
"pronunciation": "Astikshous"
}