优化批量将DataFrame列值插入字典键值对的高效方法
高效实现DataFrame列与对应字典的键值对插入
你的原代码存在两个关键问题:一是逻辑错误——内层循环会把每个字典和created_at列的所有值配对,最终生成60000×60000条数据,完全不符合“对应行插入”的需求;二是效率极低,两层嵌套循环的时间复杂度为O(n²),处理6万条数据会产生天文数字级的操作量。
下面是两种高效的优化方案,时间复杂度均为O(n):
方案1:zip遍历+字典拷贝
通过zip将字典列表和DataFrame的created_at列按行配对,遍历过程中复制原字典并添加新键值对:
new_dicties = [] for dic, created_at in zip(list_of_dicts, resultsDf0['created_at']): # 浅拷贝原字典,避免修改原列表中的字典对象 new_dic = dic.copy() new_dic['created_at'] = created_at new_dicties.append(new_dic)
如果你的字典存在嵌套结构,可改用copy.deepcopy(dic)进行深拷贝。
方案2:列表推导式+字典解包
用列表推导式简化代码,通过字典解包创建新字典,无需显式调用copy:
new_dicties = [ {**dic, 'created_at': created_at} for dic, created_at in zip(list_of_dicts, resultsDf0['created_at']) ]
这种写法更简洁,执行效率和方案1相近。
核心优化点
- 用
zip实现两个序列的按行配对,避免嵌套循环,将时间复杂度从O(n²)降到O(n) - 确保每次生成新字典(或复制原字典),避免所有元素指向同一字典引用的问题
内容的提问来源于stack exchange,提问作者jacktheripper
相关产品推荐
相关产品推荐

