Python如何循环遍历列表为嵌套字典对应键赋值
Python字典循环赋值实现方法
现有初始数据
初始字典:
a = {'chance': {'instance1': '', 'instance2': '', 'instance3': '', 'instance4': ''}}
待赋值列表:
pol = ["1","2","3","4"]
目标结果:
{'chance': {'instance1': '1', 'instance2': '2', 'instance3': '3', 'instance4': '4'}}
原有代码问题说明
之前写的两段代码无法实现需求,核心问题如下:
- 第一段双层循环仅做了数值打印,既没有关联
pol列表的元素,也没有对原字典做任何修改操作 - 第二段正则匹配代码仅识别了
instance开头的键名,内层循环执行第一次就被break中断,全程没有编写字典赋值的逻辑,仅做了打印输出
可直接运行的实现方案
方案1:按索引顺序直接赋值(推荐,无需引入正则)
因为键名instance1到instance4的序号和pol列表的元素顺序完全一一对应,直接通过索引映射赋值即可,逻辑最简单:
# 遍历pol列表的索引和值 for index, value in enumerate(pol): # 拼接对应的字典键名,索引从0开始所以序号要+1 dict_key = f"instance{index + 1}" a['chance'][dict_key] = value
运行后打印a就能得到目标结构的字典。
方案2:正则匹配键名赋值(适配键顺序不固定的场景)
如果后续字典里instance开头的键顺序不是严格按1-4排列,可以用正则提取键名里的数字,再映射到列表对应位置的元素:
import re for key in a['chance']: # 提取instance后面的数字部分 match_result = re.match(r"instance(\d+)", key) if match_result: instance_num = int(match_result.group(1)) # 数字减1对应列表索引,完成赋值 a['chance'][key] = pol[instance_num - 1]
内容的提问来源于stack exchange,提问作者yasa
相关产品推荐
相关产品推荐

