这是我第一次从网页中检索 JSON 信息。我的目标是显示当前的黄金价格,我想从免费资源中检索它。当前代码正在运行: import urllib.request import jsonrequest = urllib.request.urlopen("https://forex-data-feed.swissquote.com/public-quotes/bboquotes/instrument/XAU/USD")data = json.load(request)print(data[0])我希望这个导入的数据是一个 dict 类型,但不知何故它是一个列表?打印:{'topo': {'platform': 'MT5', 'server': 'Live1'}, 'spreadProfilePrices': [{'spreadProfile': 'Standard', 'bidSpread': 14, 'askSpread': 14.1, 'bid': 1921.59, 'ask': 1921.9}, {'spreadProfile': 'Premium', 'bidSpread': 12.7, 'askSpread': 12.7, 'bid': 1921.59, 'ask': 1921.9}, {'spreadProfile': 'Prime', 'bidSpread': 11.3, 'askSpread': 11.3, 'bid': 1921.59, 'ask': 1921.9}], 'ts': 1598379583052}现在我正在尝试接收存储在 spreadProfile Standard -> 'ask' 中的值。这可能是一个菜鸟问题,但我不明白为什么我不成功。谁能为此提供帮助,尤其是您是如何提出解决方案的?
1 回答
繁华开满天机
TA贡献1816条经验 获得超4个赞
印刷品不是列表,而是字典。该网页返回一个字典列表,通过执行data[0],您将选择列表中的第一个字典。(你确定要选第一个吗?)
为了获得询问,您首先需要找到标准配置文件。我在这里通过遍历所有配置文件和测试来做到这一点,如果循环通过的是 Standad。如果我们正在循环的那个实际上是标准的,那么只需选择“询问”并跳出循环。
for profile in data[0]['spreadProfilePrices']:
if profile['spreadProfile'] == 'Standard':
print(profile['spreadProfile']['ask'])
break
添加回答
举报
0/150
提交
取消