【发布时间】:2020-04-19 14:53:09
【问题描述】:
我试图了解如何从一个函数返回多个字典。如果我在函数本身中打印出 data_dict,我会得到五个字典。如果 data_dict 将从函数返回,存储在变量中然后打印出来,则只会显示最后一个字典。五本词典如何全部归还?
import requests
from bs4 import BeautifulSoup
import re
import json
source = requests.get('https://www.tripadvisor.ch/Hotel_Review-g188113-d228146-Reviews-Coronado_Hotel-Zurich.html#REVIEWS').text
soup = BeautifulSoup(source, 'lxml')
pattern = re.compile(r'window.__WEB_CONTEXT__={pageManifest:(\{.*\})};')
script = soup.find("script", text=pattern)
dictData = pattern.search(script.text).group(1)
jsonData = json.loads(dictData)
def get_reviews():
data_dict = {}
for locations in jsonData['urqlCache']['669061039']['data']['locations']:
for data in locations['reviewListPage']['reviews']:
data_dict['reviewid'] = data['id']
data_dict['authoridtripadvisor'] = data['userId']
userProfile = data['userProfile']
data_dict['author'] = userProfile['displayName']
print(data_dict)
#return data_dict
reviews = get_reviews()
print(reviews)
感谢您的所有建议!
【问题讨论】:
-
return dict1, dict2, dict3 -
您的问题是在
data_dict中您只能保留一本字典。您必须为所有字典和append()每个字典创建列表到此列表,并返回此字典列表。
标签: python json dictionary return