如何通过循环将字典中值之和为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)
代码说明
- 初始化变量:
new_dict存储最终分组结果,current_group临时缓存当前凑组的元素,current_sum跟踪当前组的value总和,group_idx作为分组的键名序号。 - 遍历累加:按原字典顺序逐个加入元素到临时组,更新总和。
- 组完成判断:当临时组总和为0时,将其存入结果字典,然后重置临时组和总和,开始下一组。
- 剩余元素处理:如果遍历结束后还有未凑成0的元素组,可选择将其加入结果字典(根据需求调整)。
备注
如果需要任意组合元素凑0(不限制顺序),逻辑会更复杂,需要使用回溯算法或组合查找来枚举所有可能的组合并筛选和为0的组。若有此需求可补充说明场景。
内容的提问来源于stack exchange,提问作者omar fadi
相关产品推荐
相关产品推荐

