You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何将嵌套defaultdict默认值设为指定长度的列表?

实现嵌套defaultdict并设置默认值为[0,0,0]

当然可以直接通过设置嵌套的defaultdict来实现你的需求,不用再手动逐个添加字典项!

核心实现思路

你需要构建两层嵌套的defaultdict

  • 外层是一个defaultdict,当访问不存在的年份键(比如year2019)时,自动生成一个内层的defaultdict
  • 内层的defaultdict的默认工厂函数返回你指定的[0, 0, 0]列表,这样访问不存在的温度区间键时,会自动填充这个默认值

代码示例

from collections import defaultdict

# 定义嵌套的defaultdict结构
dic01 = defaultdict(lambda: defaultdict(lambda: [0, 0, 0]))

# 直接赋值已有数据,和你原来的操作一致
dic01['year2017']['jul_to_sep_temperature'] = [25, 20, 17]
dic01['year2017']['oct_to_dec_temperature'] = [10, 8, 7]
dic01['year2018']['jan_to_mar_temperature'] = [8, 9, 10]

# 访问不存在的键时,自动生成默认值[0,0,0]
print(dic01['year2018']['apr_to_jun_temperature'])  # 输出: [0, 0, 0]
# 甚至可以直接访问完全不存在的年份和区间
print(dic01['year2019']['jul_to_sep_temperature'])  # 输出: [0, 0, 0]

额外小技巧:转换为普通字典

如果后续需要把这个嵌套的defaultdict转换成普通字典(比如用于JSON序列化),可以用字典推导式快速转换:

# 转换为普通字典结构
normal_dic = {
    year: {period: temps for period, temps in season_data.items()}
    for year, season_data in dic01.items()
}

这样就能完全替代你之前手动添加项的方式,而且更高效、更灵活!

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

火山引擎 最新活动