Python 如何从嵌套循环返回字典

Python 如何从嵌套循环返回字典,python,loops,dictionary,Python,Loops,Dictionary,如果这是一个非常基本的问题,我很抱歉,但是我使用嵌套循环构建了多个字典,我无法返回所有字典,它只返回第一个。我知道其中一部分原因是return的缩进错误,但是Python只允许return数据在那里缩进。有没有办法更改此函数,使其返回所有字典 import urllib.request import json def get_url(url): text = urllib.request.urlopen(url).read().decode() return text d

如果这是一个非常基本的问题,我很抱歉,但是我使用嵌套循环构建了多个字典,我无法返回所有字典,它只返回第一个。我知道其中一部分原因是
return
的缩进错误,但是Python只允许
return数据在那里缩进。有没有办法更改此函数,使其返回所有字典

import urllib.request
import json


def get_url(url):
    text = urllib.request.urlopen(url).read().decode()
    return text


def display_json(text):
    dictionary = json.loads(text)
    for item in dictionary['items']:
        for article in item['articles']:
            line = (article['article'], article['views'])
            data = dict([line])
            return data


def function(data):
    print(data)


def main():
    url = "https://wikimedia.org/api/rest_v1/metrics/pageviews/top/en.wikiversity/all-access/2018/01/all-days"
    text = get_url(url)
    data = display_json(text)
    function(data)


main()
使用发电机

def display_json(text):
    dictionary = json.loads(text)
    for item in dictionary['items']:
        for article in item['articles']:
            line = (article['article'], article['views'])
            data = dict([line])
            yield data

data = list(display_json(text))
使用字典理解

JSON的结构如下所示:

不需要在
项中循环,因为它只有一个元素。我们可以使用
json.loads(text)['items'][0]
获取第一个元素。即使
项目中有多个项目
,您仍然可以在理解中管理它

def display_json(text):
    return {
      item['article']:item['views'] for item in 
      json.loads(text)['items'][0]['articles']
    }