Python算法交易开发:如何从字典列表中提取token值?
提取嵌套字典列表中的token值解决方案
你的数据结构是外层字典包含values键,对应的值是一个字典列表,每个子字典里有token字段。不需要用itertools,直接遍历就能解决,还能处理第一个token里的HTML标签:
基础提取方法
直接遍历values列表,逐个取出每个字典的token值:
data = {'stat': 'Ok', 'values': [{'exch': 'NFO', 'token': '<strong>35013</strong>', 'tsym': 'BANKNIFTY27NOV24F', 'dname': 'BANKNIFTY NOV FUT', 'optt': 'XX', 'instname': 'FUTIDX', 'pp': '2', 'ls': '15', 'ti': '0.05'}, {'exch': 'NFO', 'token': '35025', 'tsym': 'BANKNIFTY24DEC24F', 'weekly': 'W4', 'dname': 'BANKNIFTY DEC FUT', 'optt': 'XX', 'instname': 'FUTIDX', 'pp': '2', 'ls': '15', 'ti': '0.05'}, {'exch': 'NFO', 'token': '35012', 'tsym': 'BANKNIFTY29JAN25F', 'dname': 'BANKNIFTY JAN FUT', 'optt': 'XX', 'instname': 'FUTIDX', 'pp': '2', 'ls': '15', 'ti': '0.05'}]} # 提取所有token tokens = [item['token'] for item in data['values']] print(tokens) # 输出: ['<strong>35013</strong>', '35025', '35012']
清理HTML标签(针对第一个token)
如果需要去掉<strong>标签,有两种简单方法:
- 字符串替换:适合已知固定标签的场景
clean_tokens = [item['token'].replace('<strong>', '').replace('</strong>', '') for item in data['values']] print(clean_tokens) # 输出: ['35013', '35025', '35012']
- 正则表达式:适合处理任意HTML标签的通用场景
import re clean_tokens = [re.sub(r'<.*?>', '', item['token']) for item in data['values']] print(clean_tokens) # 输出: ['35013', '35025', '35012']
关于itertools的说明
itertools主要用于迭代器的高效组合、过滤等操作,你的场景是简单的列表遍历,用列表推导式更直接,没必要用itertools。之前用itertools无效,大概率是没正确定位到values这个核心列表。
内容的提问来源于stack exchange,提问作者ajayav
相关产品推荐
相关产品推荐

