我正在使用一个流式传输数据的REST API,我想获取相关位并返回它(在另一个脚本中进行操作)。以下是原始数据的示例:
data = {"tick":{"instrument":"AUD_CAD","time":"2014-01-30T20:47:08.066398Z","bid":0.98114,"ask":0.98139}}
我想保留出价和要价,然后退回。为了实现这一点,我的代码如下所示:
def stream(data):
bid = data['tick']['bid']
ask = data['tick']['ask']
return(bid, ask)
bid, ask = stream()
哪个不起作用。但是,如果我用print替换return,它会打印数据就好了。以下是错误消息的相关位:
bid = data['tick']['bid']
KeyError: 'tick'
关于问题的任何想法?
答案 0 :(得分:1)
问题已更新,所以这是一个新尝试:
我尝试执行您的代码,但收到了错误bid, ask = stream()
。你必须用这样的参数调用函数:bid, ask = stream(data)
分配值。我无法重现你的错误。
再想一想:
如果从另一个脚本调用具有函数stream
的脚本,则必须注意调用该函数的脚本中存在data
变量。
答案 1 :(得分:-1)
返回必须在函数内,因为它在函数外部不起作用。
见下文哪些方法按预期工作:
data = {"tick":{"instrument":"AUD_CAD","time":"2014-01- 30T20:47:08.066398Z","bid":0.98114,"ask":0.98139}}
def test(data):
bid = data['tick']['bid']
ask = data['tick']['ask']
return(bid, ask)
print test(data)
打印(0.98114,0.98139)