Python:在Dict中调用有效键/索引时的KeyError

时间:2018-01-05 16:11:06

标签: python json dictionary keyerror

我有一些我从websocket中提取的JSON数据:

while True:
    result = ws.recv()    
    result = json.loads(result)

这是Print(结果):

{'type': 'ticker', 'sequence': 4779671311, 'product_id': 'BTC-USD', 'price': '15988.29000000', 'open_24h': '14566.71000000', 'volume_24h': '18276.75612545', 'low_24h': '15988.29000000', 'high_24h': '16102.00000000', 'volume_30d': '1018642.48337033', 'best_bid': '15988.28', 'best_ask': '15988.29', 'side': 'buy', 'time': '2018-01-05T15:38:21.568000Z', 'trade_id': 32155934, 'last_size': '0.02420000'}

现在我想访问'价格'值。

print (result['price'])

这导致KeyError:

File "C:/Users/Selzier/Documents/Python/temp.py", line 43, in <module>
    print (result['price'])
KeyError: 'price'

但是,如果我对(结果)数据执行循环,那么我可以成功打印 i 结果[i]

  for i in result:        
        if i == "price":
            print (i)
            print (result[i])

将打印以下数据:

price
16091.00000000

调用时为什么会出现'KeyError':

result['price']

result[0]

当我在结果'循环中不在'之内时?

1 个答案:

答案 0 :(得分:1)

while True循环中创建一个后卫,就像在for循环中一样:

while True:
    result = ws.recv()
    result = json.loads(result)
    if result and 'price' in result:
        print(result['price'])
    ...

(阅读我的评论)

enter image description here