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']
}