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

如何用defaultdict(list)批量初始化字典并直接传入自定义函数?

批量初始化字典并调用函数的高效方案

嘿,完全理解你不想手动写50次重复初始化代码的痛苦——这绝对是低效且容易出错的做法!咱们用更简洁的方式解决这个问题,核心思路是批量管理参数+循环自动处理,直接跳过手动创建50个字典变量的步骤。

先纠正一个小问题

你写的initialise函数其实没有实际作用:函数内部重新赋值了dict参数,返回的是新的defaultdict(list),但外部的变量根本不会被修改。所以完全不需要这个函数,直接在需要的地方创建defaultdict(list)即可。

最优解决方案

步骤很简单:

  1. 把所有需要传入的参数组整理成一个列表:每个元素是一个元组,包含对应make_somefunction的custom_keys和custom_listofvalues。
  2. 循环遍历参数列表:每次自动创建新的defaultdict(list),直接传入函数调用。

代码示例

from collections import defaultdict

# 第一步:整理50组参数(这里示例写3组,你可以扩展到50组)
param_groups = [
    (animals, foods),       # 对应原来的dict1参数
    (patients, drugs),      # 对应原来的dict2参数
    (fridge, fruits),       # 对应原来的dict3参数
    # ... 剩下47组参数依次添加
]

# 第二步:批量调用函数,可选保存返回值
# 如果需要保存每个函数的返回结果,用列表存起来
results = []
for keys, values in param_groups:
    # 直接创建defaultdict并传入函数,无需单独定义变量
    func_result = make_somefunction(defaultdict(list), keys, values)
    results.append(func_result)

# 如果不需要保存返回值,直接循环调用即可
# for keys, values in param_groups:
#     make_somefunction(defaultdict(list), keys, values)

更简洁的写法(列表推导式)

如果需要收集所有返回值,一行代码就能搞定:

results = [make_somefunction(defaultdict(list), keys, values) for keys, values in param_groups]

为什么这方法更好?

  • 代码简洁易维护:新增/删除参数组只需要修改param_groups列表,不用改几十行重复代码。
  • 避免变量污染:不需要创建50个命名混乱的字典变量(dict1、dict2...),直接在调用时临时创建。
  • 扩展性强:如果以后需要处理100组参数,只需要扩展参数列表就行,逻辑完全不用改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 09:57:27