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

如何从导入的Python文件中选取部分不等长列表批量生成字典

可扩展实现方案

你可以通过遍历模块属性自动筛选符合要求的列表,不用手动逐个输入列表名,下面提供两种常用的实现思路:

方案1:自动过滤+排除名单(适合快速筛选50选48的场景)

你只需要提前定义不需要纳入字典的2个列表名,程序会自动抓取模块内所有剩下的列表生成字典:

import a_py_file

# 仅需要配置要排除的2个列表名,无需修改其他逻辑
EXCLUDE_LIST_NAMES = {'color', 'name'}

one_dictionary = {}
# 遍历导入模块的所有属性
for attr_name in dir(a_py_file):
    # 跳过系统自带的魔法属性、私有属性
    if attr_name.startswith('_'):
        continue
    # 跳过你指定要排除的列表
    if attr_name in EXCLUDE_LIST_NAMES:
        continue
    # 获取属性值
    attr_val = getattr(a_py_file, attr_name)
    # 仅保留值为列表的属性
    if isinstance(attr_val, list):
        one_dictionary[attr_name] = attr_val

如果后续要调整排除的列表,只需要修改EXCLUDE_LIST_NAMES即可,扩展性极强。

方案2:预定义导出清单(适合稳定性要求更高的场景)

如果担心模块内的其他非业务列表被误抓取,可以在a_py_file.py内提前定义好要导出的列表清单,后续修改导出范围只需要调整清单即可:

  1. 首先在a_py_file.py末尾添加如下代码:
# 方法A:手动维护要导出的48个列表名
EXPORT_LISTS = [
    'fruits',
    'location',
    'idk',
    # 剩余45个列表名
]

# 方法B:自动生成导出清单,仅需要配置排除项,不用手动写48个名字
EXCLUDE_LISTS = {'color', 'name'}
EXPORT_LISTS = [
    k for k, v in locals().items()
    if not k.startswith('_') and isinstance(v, list) and k not in EXCLUDE_LISTS
]
  1. 导入时直接遍历清单生成字典:
import a_py_file

one_dictionary = {
    list_name: getattr(a_py_file, list_name)
    for list_name in a_py_file.EXPORT_LISTS
}

这种方案不会受到模块内新增的其他无关列表的影响,稳定性更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 09:06:03