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

Python 3.9如何将dict1按键值对两两分组合并到dict2中

Python 3.9 字典分组填充实现方案

前置条件

  • 运行环境:Python 3.9
  • 初始定义的两个字典:
dict1 = {'ZS': [1, 2], 'ZP': [3], 'XS': [4, 5], 'XP': [6, 7]}
dict2 = {'a': {}, 'b': {}}
  • 目标:将dict1的键值对按插入顺序每2个分为一组,依次作为dict2对应键的值,最终得到结构如下的结果:
result_dict = {'a': {'ZS': [1, 2], 'ZP': [3]}, 'b' : {'XS': [4, 5], 'XP': [6, 7]}}

实现思路

Python 3.7及以上版本的字典默认保留插入顺序,3.9版本完全支持该特性,不需要额外引入有序字典类,直接按顺序遍历dict1的键值对做批次拆分,再和dict2的键一一对应赋值即可。

可运行代码

写法1:迭代器逐次取值(适配dict1长度不固定场景)

这种写法不需要提前计算dict1的长度,就算dict1的键值对总数不是2的整数倍也能正常处理,不会抛出索引错误:

# 将dict1的键值对转为迭代器
item_iter = iter(dict1.items())
result_dict = dict2.copy() # 不想修改原dict2可以保留这行,不需要可删除

for target_key in result_dict:
    sub_items = {}
    # 每次取2个键值对
    for _ in range(2):
        try:
            k, v = next(item_iter)
            sub_items[k] = v
        except StopIteration:
            break
    result_dict[target_key] = sub_items

print(result_dict)

写法2:切片批量分组(代码更简洁)

如果确定dict1的键值对数量刚好可以按2个一组全部分配给dict2的键,可以用列表切片的方式写得更简洁:

# 拆分dict1为每2个键值对一组的子字典列表
item_groups = []
all_items = list(dict1.items())
for i in range(0, len(all_items), 2):
    item_groups.append(dict(all_items[i:i+2]))

# 和dict2的键按顺序配对生成结果
result_dict = dict(zip(dict2.keys(), item_groups))
print(result_dict)

两种写法运行后输出的结果和需求给出的目标结构完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 20:24:19