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

如何基于列表元素创建同名空字典?结合configparser读取配置

解决方法:动态创建同名字典并读取配置

原代码的问题在于循环里的each = {}只是修改了循环变量的指向,并没有真正创建one、two、three这些同名字典变量,循环结束后不会留下这些独立的变量。下面提供两种可行的实现方式:

方法1:动态创建同名变量(不推荐)

通过globals()函数直接操作全局命名空间,创建与列表元素同名的字典变量:

import configparser

# 读取配置文件
config = configparser.ConfigParser()
config.read('你的配置文件路径.ini')

business = ['one','two','three']

for name in business:
    # 读取对应配置,get方法避免键不存在时报错
    regex_content = config['business'].get(name, '')
    # 动态创建同名空字典
    globals()[name] = {}
    # 可选:将正则内容拆分后存入字典
    if regex_content:
        globals()[name]['regex_list'] = regex_content.split('|')

执行后就可以直接使用one、two、three作为字典变量,比如one['data'] = '示例数据'。但这种方式会污染全局命名空间,不推荐在复杂项目中使用。

方法2:用主字典统一管理(推荐)

创建一个主字典,把所有业务对应的子字典存放在其中,既清晰又不会污染命名空间:

import configparser

config = configparser.ConfigParser()
config.read('你的配置文件路径.ini')

business = ['one','two','three']
# 主字典,用于管理所有业务对应的字典
business_collections = {}

for name in business:
    regex_content = config['business'].get(name, '')
    # 创建空字典并存入主字典
    business_collections[name] = {}
    # 可选:存入处理后的正则配置
    business_collections[name]['regex_list'] = regex_content.split('|') if regex_content else []

后续操作时通过主字典的键访问对应子字典,比如business_collections['one']['new_data'] = '新数据',这种方式更符合Python编码规范,便于维护。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 15:43:28