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
相关产品推荐
相关产品推荐

