You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过循环将字典中值之和为0的元素分组到新字典?

Python 按值之和为0分组嵌套字典元素

问题描述

我有如下嵌套字典:

original_dict = {
    "A": {"value": 5},
    "B": {"value": -3},
    "C": {"value": -2},
    "D": {"value": 2},
    "E": {"value": -2}
}

需要将其中value之和为0的元素分组,每个组作为新字典的子项,最终结构如下:

new_dict = {
    "0": {
        "A": {"value": 5},
        "B": {"value": -3},
        "C": {"value": -2}
    },
    "1": {
        "D": {"value": 2},
        "E": {"value": -2}
    }
}

解决方案(按顺序累加凑组)

以下代码按照元素顺序累加,凑够value和为0时完成一组:

original_dict = {
    "A": {"value": 5},
    "B": {"value": -3},
    "C": {"value": -2},
    "D": {"value": 2},
    "E": {"value": -2}
}

new_dict = {}
current_group = {}
current_sum = 0
group_idx = 0

for key, entry in original_dict.items():
    val = entry["value"]
    # 将当前元素加入临时组
    current_group[key] = entry
    current_sum += val
    
    # 临时组和为0时,存入结果字典并重置
    if current_sum == 0:
        new_dict[str(group_idx)] = current_group
        group_idx += 1
        current_group = {}
        current_sum = 0

# 处理剩余未凑成0的元素(可选,根据需求保留或丢弃)
if current_group:
    new_dict[str(group_idx)] = current_group

# 输出结果
print(new_dict)

代码说明

  1. 初始化变量:new_dict存储最终分组结果,current_group临时缓存当前凑组的元素,current_sum跟踪当前组的value总和,group_idx作为分组的键名序号。
  2. 遍历累加:按原字典顺序逐个加入元素到临时组,更新总和。
  3. 组完成判断:当临时组总和为0时,将其存入结果字典,然后重置临时组和总和,开始下一组。
  4. 剩余元素处理:如果遍历结束后还有未凑成0的元素组,可选择将其加入结果字典(根据需求调整)。

备注

如果需要任意组合元素凑0(不限制顺序),逻辑会更复杂,需要使用回溯算法或组合查找来枚举所有可能的组合并筛选和为0的组。若有此需求可补充说明场景。

内容的提问来源于stack exchange,提问作者omar fadi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 17:05:21