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"
  }