猿问

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

我昨天刚刚开始使用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()


海绵宝宝撒
浏览 70回答 3
3回答

守着星空守着你

查看实际的 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']}")

jeck猫

你的代码只有一个问题:您正在迭代的项上没有键。实际上,其中有一个文章列表。因此,如果您只是添加:articlefor 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']}")

慕姐4208626

使用像火狐浏览器这样的 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']}")
随时随地看视频慕课网APP

相关分类

Python
我要回答