Python -从嵌套字典中提取特定项



在做一个小项目,我可能在我的头。使用CoinMarketCap API,我试图理解如何解析他们的结果,以提取返回值的特定部分。

例如:

result = {'status': {'timestamp': '2021-02-22T00:04:51.978Z', 'error_code': 0, 'error_message': None, 'elapsed': 46, 'credit_count': 1, 'notice': None}, 'data': {'1INCH': {'id': 8104, 'name': '1inch', 'symbol': '1INCH', 'slug': '1inch', 'cmc_rank': 83, 'last_updated': '2021-02-22T00:03:09.000Z', 'quote': {'BTC': {'price': 8.793673178965842e-05, 'volume_24h': 4010.9008604493424, 'percent_change_1h': 1.77689058, 'percent_change_24h': -3.76351861, 'percent_change_7d': -19.9798068, 'percent_change_30d': 66.4333541, 'market_cap': 12615.667000751586, 'last_updated': '2021-02-22T00:03:02.000Z'}}}}}

我无法弄清楚如何从这个变量中提取'symbol', 'cmc_rank'和'market_cap'值。正确的做法是什么?

谢谢

试试这个解决方案,它应该会给你你正在寻找的:

symbol     = result['data']['1INCH']['symbol']
cmc_rank   = result['data']['1INCH']['cmc_rank']
market_cap = result['data']['1INCH']['quote']['BTC']['market_cap']

你试过了吗?

print(result["data"]["1INCH"]["symbol"])
print(result["data"]["1INCH"]["cmc_rank"])
print(result["data"]["1INCH"]["quote"]["BTC"]["market_cap"])

在本例中,您有一个嵌套字典。做一些缩进是有帮助的…

result = {
'status': {
'timestamp': '2021-02-22T00:04:51.978Z', 
'error_code': 0, 
'error_message': None, 'elapsed': 46, 'credit_count': 1, 'notice': None}, 
'data': {
'1INCH': {
'id': 8104, 'name': '1inch', 'symbol': '1INCH', 'slug': '1inch', 'cmc_rank': 83, 'last_updated': '2021-02-22T00:03:09.000Z', 
'quote': {
'BTC': {
'price': 8.793673178965842e-05, 'volume_24h': 4010.9008604493424, 'percent_change_1h': 1.77689058, 'percent_change_24h': -3.76351861, 'percent_change_7d': -19.9798068, 'percent_change_30d': 66.4333541, 'market_cap': 12615.667000751586, 'last_updated': '2021-02-22T00:03:02.000Z'}}}}}

在字典中冒号(:)左边的部分是右边的部分是值

所以在你给的例子中:result['data']['1INCH']['symbol']会给你符号的价值,result['data']['1INCH']['quote']['BTC']['market_cap']会给你市值的价值。

然而,这只会在密钥不变的情况下起作用。在本例中,看起来返回的结果是符号('1INCH')作为键。货币("BTC")也是如此。如果你总是期待"1INCH"one_answers"BTC",那么你可以硬编码它。另一方面,如果符号和/或货币发生变化,你会想(a)存储变量并使用它们(例如symbol='1INCH' ....)Result = x.query(symbol)....结果("数据")(符号)…)OR(2)获取键或(3)循环。

获取任意字典的键的列表——在这个例子中,字典'data'的键:dkeys = list(result['data'].keys())…然后,您可以使用len(dkeys)检查长度和/或使用数字(因为它是一个列表)dkeys[0]访问键。输入result['data'][dkeys[0]]...

或者你可以循环-如果你有多个结果,这将是伟大的:

#the .items() method will return 2 values - the key and value for each entry
for k, v in result['data'].items():
#k would be the symbol in this case and v is the dictionary represented by that key
market_cap = v['quote']['BTC']['market_cap']
#note if there are multiple symbols here, it would overwrite market_cap...

相关内容

  • 没有找到相关文章

最新更新