如何从API返回的字典数据中提取token与tsym构建新字典
问题:从经纪商API返回的字典中提取指定键值对构建新字典
我通过经纪商API获取到以下类型为
<class 'dict'>、len(my_dict)返回1的字典数据:
{'1': [{'exch': 'NFO', 'token': '43214', 'tsym': 'NIFTY07DEC23C20700', 'weekly': 'W1', 'dname': 'NIFTY 07DEC23 20700 CE ', 'instname': 'OPTIDX', 'pp': '2', 'ls': '50', 'ti': '0.05', 'optt': 'CE'}, {'exch': 'NFO', 'token': '43218', 'tsym': 'NIFTY07DEC23P20700', 'weekly': 'W1', 'dname': 'NIFTY 07DEC23 20700 PE ', 'instname': 'OPTIDX', 'pp': '2', 'ls': '50', 'ti': '0.05', 'optt': 'PE'}, {'exch': 'NFO', 'token': '43206', 'tsym': 'NIFTY07DEC23C20600', 'weekly': 'W1', 'dname': 'NIFTY 07DEC23 20600 CE ', 'instname': 'OPTIDX', 'pp': '2', 'ls': '50', 'ti': '0.05', 'optt': 'CE'}, {'exch': 'NFO', 'token': '43207', 'tsym': 'NIFTY07DEC23P20600', 'weekly': 'W1', 'dname': 'NIFTY 07DEC23 20600 PE ', 'instname': 'OPTIDX', 'pp': '2', 'ls': '50', 'ti': '0.05', 'optt': 'PE'}]}
希望从中提取
'token'和'tsym'键值对,构建一个以token值为键、tsym值为值的新字典,示例如下:
new_dict = {'43214':'NIFTY07DEC23C20700', '43218':'NIFTY07DEC23P20700', '43206': 'NIFTY07DEC23C20600', '43207': 'NIFTY07DEC23P20600'}
解决方案
方法一:简洁的字典推导式
直接通过字典推导式遍历原始数据列表,提取所需键值对:
# 假设原始字典变量名为my_dict new_dict = {item['token']: item['tsym'] for item in my_dict['1']}
方法二:循环遍历构建(适合新手理解)
通过循环逐个提取并添加到新字典:
new_dict = {} # 遍历原始字典中'1'对应的合约列表 for item in my_dict['1']: # 将token作为键、tsym作为值存入新字典 new_dict[item['token']] = item['tsym']
通用写法(无需固定键名)
如果不确定原始字典的唯一键是否为'1',可以用以下方式获取列表,兼容性更强:
# 获取原始字典中唯一的列表数据 contract_list = next(iter(my_dict.values())) # 构建新字典 new_dict = {item['token']: item['tsym'] for item in contract_list}
内容的提问来源于stack exchange,提问作者Scalper Vegeta
相关产品推荐
相关产品推荐

