2021-02-16 22:23:39
在Python中,可以使用字典推导式从复杂嵌套字典中高效提取并重构数据,将特定字段(如'token'和'tsym')转换为新字典的键值对。以下是详细说明:
数据结构分析键:子字典的'token'值(如'43214')。
值:子字典的'tsym'值(如'NIFTY07DEC23C20700')。
my_dict['1']:访问顶级键'1'对应的列表。
for d in my_dict['1']:遍历列表中的每个子字典。
d['token']和d['tsym']:分别提取子字典的键和值。
最终生成形如{token: tsym}的新字典。
输出结果:
{ '43214': 'NIFTY07DEC23C20700', '43218': 'NIFTY07DEC23P20700', '43206': 'NIFTY07DEC23C20600', '43207': 'NIFTY07DEC23P20600'}注意事项与最佳实践键的唯一性:
字典键必须唯一。若原始数据中存在重复'token',后出现的键值对会覆盖前者。
示例:若有两个子字典的'token'均为'43214',新字典中仅保留最后一个值。
键值存在性检查:
若子字典可能缺失'token'或'tsym',直接访问会引发KeyError。
改进方案:使用.get()方法提供默认值,或添加条件过滤:new_dict_robust = { d.get('token'): d.get('tsym') for d in my_dict.get('1', []) if d.get('token') is not None and d.get('tsym') is not None}
性能优化:
字典推导式在C语言级别实现,比传统for循环更高效,尤其适合大规模数据集。
可读性:
字典推导式简洁直观,适合简单映射场景。复杂逻辑建议拆分为多步操作或函数。