Python 如何从流式生成的嵌套字典列表提取'p'键值并保留原结构
Python 实现方案
一次性全量处理现有数据
直接使用嵌套列表推导式即可完成提取,同时保留原有二级嵌套结构,还会自动把p对应的字符串格式数值转为浮点型:
# 原始二级嵌套字典列表 raw_data = [ [{'T': 1626610583088, 'p': '12562.12'}, {'T': 1626610583088, 'p': '12562.12'}], [{'T': 1626610583088, 'p': '12562.12'}, {'T': 1626610583088, 'p': '12562.12'}, {'T': 1626610583088, 'p': '12562.12'}], [{'T': 1626610583088, 'p': '12562.12'}] ] # 提取p值并保留结构 result = [[float(item['p']) for item in sub_list] for sub_list in raw_data]
处理后result的输出完全符合要求:[[12562.12, 12562.12], [12562.12, 12562.12, 12562.12], [12562.12]]
数据流增量处理方案
因为数据是持续新增的,不需要每次全量重处理整个列表,每次新的子列表生成时单独处理后追加到结果集即可,性能更高:
# 初始化结果存储列表 result = [] # 新增子列表时调用该方法即可 def process_new_sub(raw_sub_list): processed_sub = [float(item['p']) for item in raw_sub_list] result.append(processed_sub) # 示例调用 new_sub = [{'T': 1626610583100, 'p': '12564.22'}, {'T': 1626610583100, 'p': '12564.25'}] process_new_sub(new_sub)
异常兼容优化
如果存在部分字典没有p键的场景,可增加判断避免报错:
# 加判断兼容缺键情况 result = [[float(item['p']) for item in sub_list if 'p' in item] for sub_list in raw_data]
内容的提问来源于stack exchange,提问作者Liviu Barbu
相关产品推荐
相关产品推荐

