为了账号安全,请及时绑定邮箱和手机立即绑定

解析 JSON 文件时获取密钥错误

解析 JSON 文件时获取密钥错误

海绵宝宝撒 2022-09-20 10:07:06
我昨天刚刚开始使用JSON文件,并且我已经搜索了与KeyError相关的其他问题,但到目前为止,没有一个答案有所帮助。我正在尝试解析此JSON文件并创建一个字典,使“文章”成为键,“视图”成为值。但是,我只是在尝试打印它时遇到密钥错误。如果我使用不同的URL,代码可以工作,但我需要使用这个URL。我只是打印错了吗?def display(url, text):    print(url)    dictionary = json.loads(text)    for item in dictionary['items']:        print(f"{item['article']}:\t\t{item['views']}")def main():    url = "https://wikimedia.org/api/rest_v1/metrics/pageviews/top/en.wikiversity/all-access/2018/01/all-days"    display(url, text)main()
查看完整描述

3 回答

?
守着星空守着你

TA贡献1799条经验 获得超8个赞

查看实际的 JSON 数据:


{

  "items": [

    {

      "project": "en.wikiversity",

      "access": "all-access",

      "year": "2018",

      "month": "01",

      "day": "all-days",

      "articles": [

        {

          "article": "Psycholinguistics/Models_of_Speech_Production",

          "views": 585462,

          "rank": 1

        },

        {

          "article": "Wikiversity:Main_Page",

          "views": 118971,

          "rank": 2

        },

        {

          "article": "Special:Search",

          "views": 60332,

          "rank": 3

        },

你不是在寻找,你实际上是在寻找items[n]['article|views']items[n]['articles'][n]['article|views']


def display(url, text):

    print(url)

    dictionary = json.loads(text)

    for item in dictionary['items']:

        for article in item['articles']:

            print(f"{article['article']}:\t\t{article['views']}")


查看完整回答
反对 回复 2022-09-20
?
jeck猫

TA贡献1909条经验 获得超7个赞

你的代码只有一个问题:


您正在迭代的项上没有键。实际上,其中有一个文章列表。因此,如果您只是添加:article


for article in item['articles']:

它将工作(更改您的显示方法):


def display(url, text):

    print(url)

    dictionary = json.loads(text)

    for item in dictionary['items']:

        for article in item['articles']:

            print(f"{article['article']}:\t\t{article['views']}")


查看完整回答
反对 回复 2022-09-20
?
慕姐4208626

TA贡献1852条经验 获得超7个赞

使用像火狐浏览器这样的 json 查看器来浏览 json。您没有正确引用它。


首先,该页面在项目中只有一个条目,因此迭代似乎很奇怪。


无论哪种方式,在您的for循环中,每个项目都是一个字典。有一个称为文章的关键是字典列表,因此您需要一个嵌套循环。


def display(url, text):

    print(url)

    dictionary = json.loads(text)

    for item in dictionary['items']:

        for article in item['articles']:

            print(f"{article['article']}:\t\t{article['views']}")


查看完整回答
反对 回复 2022-09-20
  • 3 回答
  • 0 关注
  • 69 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信