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

Python如何将嵌套字典按每两个键值对拆分重组

Python实现嵌套字典按每2个键值对拆分重组

注意:你给出的目标输出写法{1:{{a:100,b:200},{c:300,d:100}}}不符合Python语法:字典是可变类型,不支持哈希运算,无法作为集合(set)的元素。以下实现默认将拆分后的每组小字典存入元组,如果你需要集合结构,可以将每组小字典转为frozenset后存入集合。

  • 本实现依赖Python 3.7+版本字典默认保留插入顺序的特性,若使用更低版本,需替换为collections.OrderedDict保证拆分顺序正确
  • 遍历原嵌套字典的所有外层键值对
  • 将内层字典的键值对转为列表后,按每2个元素为一组做切片
  • 每组切片转为新的小字典,所有小字典组装后作为外层键对应的值

完整实现代码:

# 示例原始字典
original_dict = {
    1: {"a": 100, "b": 200, "c": 300, "d": 100},
    2: {"e": 100, "f": 200, "g": 300, "h": 100},
    3: {"i": 50, "j": 60, "k": 70}  # 兼容奇数个键值对的场景,最后一组自动保留剩余元素
}

def split_nested_dict(input_dict, group_size=2):
    result = {}
    for outer_key, inner_dict in input_dict.items():
        inner_items = list(inner_dict.items())
        groups = []
        # 按指定步长切片分组
        for i in range(0, len(inner_items), group_size):
            groups.append(dict(inner_items[i:i+group_size]))
        # 默认返回元组结构,需要集合可替换为下方注释的写法
        result[outer_key] = tuple(groups)
        # 集合结构写法:result[outer_key] = {frozenset(g.items()) for g in groups}
    return result

# 调用函数
new_dict = split_nested_dict(original_dict)
print(new_dict)

运行后输出结构如下:

{
    1: ({'a': 100, 'b': 200}, {'c': 300, 'd': 100}),
    2: ({'e': 100, 'f': 200}, {'g': 300, 'h': 100}),
    3: ({'i': 50, 'j': 60}, {'k': 70})
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 17:58:02