从导入的 JSON 返回特定值

这是我第一次从网页中检索 JSON 信息。我的目标是显示当前的黄金价格,我想从免费资源中检索它。


当前代码正在运行:


    import urllib.request

    import json


request = 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' 中的值。


这可能是一个菜鸟问题,但我不明白为什么我不成功。谁能为此提供帮助,尤其是您是如何提出解决方案的?


隔江千里
浏览 89回答 1
1回答

繁华开满天机

印刷品不是列表,而是字典。该网页返回一个字典列表,通过执行data[0],您将选择列表中的第一个字典。(你确定要选第一个吗?)为了获得询问,您首先需要找到标准配置文件。我在这里通过遍历所有配置文件和测试来做到这一点,如果循环通过的是 Standad。如果我们正在循环的那个实际上是标准的,那么只需选择“询问”并跳出循环。for profile in data[0]['spreadProfilePrices']:     if profile['spreadProfile'] == 'Standard':          print(profile['spreadProfile']['ask'])          break
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python