如何将字典列表快速转换为嵌套字典?求比Pandas更快的实现
字典列表转嵌套字典的高效实现方式
问题背景
给定如下字典列表:
ls1 = [{'AccountBalance': '78', 'Status': '0'}, {'AccountBalance': '56', 'Status': '1'}, {'AccountBalance': '34', 'Status': '0'}, {'AccountBalance': '12', 'Status': '0'}]
需要转换为以下结构的嵌套字典:
dict1 = {'AccountBalance': {0: '78', 1: '56', 2: '34', 3: '12'}, 'Status': {0: '0', 1: '1', 2: '0', 3: '0'}}
已知用pd.DataFrame(ls1).to_dict()可以实现转换,想找更快的替代方法。
高效实现方案
1. 纯Python原生循环实现
不需要依赖任何第三方库,直接通过遍历构建目标字典,比pandas的方法快很多,尤其是小数据量场景:
# 先提取所有需要的键 keys = ls1[0].keys() # 初始化目标嵌套字典 result = {key: {} for key in keys} # 遍历原列表,按索引填充对应值 for idx, item in enumerate(ls1): for key in keys: result[key][idx] = item[key]
2. 字典推导式简化版
和上面的循环逻辑完全一致,只是用字典推导式让代码更简洁,效率几乎相同:
keys = ls1[0].keys() result = { key: {idx: item[key] for idx, item in enumerate(ls1)} for key in keys }
为什么这些方法更快?
pandas的DataFrame在创建和转换过程中会做大量额外操作,比如数据类型校验、索引管理、内存优化等,这些操作对于复杂数据处理很有用,但对于这种简单的结构转换来说都是额外开销。原生Python操作直接针对需求处理,没有多余步骤,所以执行效率更高。如果是超大规模数据,可以再测试对比,但绝大多数场景下原生实现足够高效。
内容的提问来源于stack exchange,提问作者frank
相关产品推荐
相关产品推荐

