479 浏览
0

打印出trade=api.get_trade()里面的成交信息,发现是一个很复杂的多级嵌套字典,如下节选其中前部分

 {'PYSDK_target_aaa8a2dd43bdb83907995803aecc093e|2': <tqsdk.objs.Trade object at 0x000002384A0C4F70>, D({'order_id': 'PYSDK_target_aaa8a2dd43bdb83907995803aecc093e', 'trade_id': 'PYSDK_target_aaa8a2dd43bdb83907995803aecc093e|2', 'exchange_trade_id': 'PYSDK_target_aaa8a2dd43bdb83907995803aecc093e|2', 'exchange_id': 'SHFE', 'instrument_id': 'fu2403', 'direction': 'BUY', 'offset': 'OPEN'})},想要读取里面的关键字'trade_id','instrument_id'等信息发现直接用trade.get('instrument_id')读取不出来,如果我要读取的信息属于第一级关键字'PYSDK_target_aa***这一段的交易id的化,问题是程序不知道第一条交易id信息,字典又不能用位置定位查询trade.iloc[1],关键字只知道第二级嵌套字典里面的key值,不知道第一级的key值,像这种情况什么方法可以读取到第二级字典里面的keys值对应的values值吗?需要把trade里面的所有交易记录用for item in trade.item()逐级遍历到列表里面,再从列表里面获取吗?
李思恒 已回答的问题 2023年12月28日
0

是的,要逐级遍历的,其实order、trade、position在没有输入合约的时候,返回的数据结构都是一个字典套字典的形式。所以需要遍历第一层把里面的字典拿到,再去取字典里面的字段

李思恒 已回答的问题 2023年12月28日