如何在Python中高效更新嵌套字典的元素数值
嵌套字典批量更新值的最优高效方案
原字典
dic = {1:{"Warehouse1":100, "Warehouse2":100, "Warehouse3":100}, 2:{"Warehouse1":200, "Warehouse2":200, "Warehouse3":200}, 3:{"Warehouse1":300, "Warehouse2":300, "Warehouse3":300}, 4:{"Warehouse1":400, "Warehouse2":400, "Warehouse3":400}}
预期结果
dic = {1:{"Warehouse1":250, "Warehouse2":250, "Warehouse3":250}, 2:{"Warehouse1":230, "Warehouse2":230, "Warehouse3":230}, 3:{"Warehouse1":340, "Warehouse2":340, "Warehouse3":340}, 4:{"Warehouse1":500, "Warehouse2":500, "Warehouse3":500}}
最优实现方法
先明确每个外层键对应的增量:键1加150,键2加30,键3加40,键4加100。最高效的方式是原地修改原字典,避免额外内存开销,同时用增量映射表管理每个键的增加值,代码如下:
# 定义每个外层键对应的增量 increments = {1: 150, 2: 30, 3: 40, 4: 100} # 嵌套循环原地更新 for key, warehouse_dict in dic.items(): add = increments[key] for warehouse in warehouse_dict: warehouse_dict[warehouse] += add
方案优势
- 高效低开销:直接修改原字典的可变内层字典,无需创建新结构,内存占用极低。
- 清晰易维护:增量映射表单独定义,后续调整只需修改
increments,逻辑一目了然。 - 时间复杂度最优:整体时间复杂度为O(n)(n为所有仓库值的总数),是理论上的最优效率。
运行代码后,原字典dic会直接更新为预期结果。
内容的提问来源于stack exchange,提问作者FZL
相关产品推荐
相关产品推荐

