为了账号安全,请及时绑定邮箱和手机立即绑定

从导入的 JSON 返回特定值

从导入的 JSON 返回特定值

隔江千里 2023-06-20 15:14:35
这是我第一次从网页中检索 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

查看完整回答
反对 回复 2023-06-20
  • 1 回答
  • 0 关注
  • 88 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信