在python中使用Json时出现KeyError

时间:2019-08-31 09:20:00

标签: python json

我正在使用基本脚本从交易所检索一些交易数据,这是响应:

{'info': {'symbol': 'ETHBTC',
  'orderListId': -1,
  'price': '0.01083700',
  'origQty': '0.01800000',
  'executedQty': '0.00000000',
  'cummulativeQuoteQty': '0.00000000',
  'status': 'NEW',
  'timeInForce': 'GTC',
  'type': 'LIMIT',
  'side': 'BUY',
  'stopPrice': '0.00000000',
  'icebergQty': '0.00000000',
  'time': 1567078061338,
  'updateTime': 1567078061338,
  'isWorking': True}}

现在,我想单独打印此响应的某些部分。

如果我尝试:

tot = exchange.fetch_open_orders()
    for x in tot:
        print(x['symbol'])

我会得到:'ETHBTC'。到目前为止,一切正常。

但是,如果我尝试:

tot = exchange.fetch_open_orders()
    for x in tot:
        print(x['origQty']) 

我得到一个KeyError: 'origQty',很奇怪,因为当我尝试引用一个不存在但存在的参数时,应该出现此错误,因为它在我的响应中。我在做什么错了?

2 个答案:

答案 0 :(得分:1)

在这里,您需要迭代键上的字典,因此每次尝试从键中获取价值时,这就是为什么它会给KeyError。 当字典中不存在的键仍被访问时,会发生这种情况。 这可以通过以下方法来实现。

for x in tot:
    print(tot[x].get('symbol'))
    print(tot[x].get('origQty'))

提供输出

ETHBTC
0.01800000

答案 1 :(得分:0)

我不确定tot的格式是什么。但是您可以尝试一下。

for x, v in dict(tot).items():
    print(v['symbol'])
    print(v['origQty'])

输出:

ETHBTC
0.01800000