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

如何用一行代码基于三个列表生成三级嵌套字典?

解决三级嵌套字典的一行代码实现问题

嘿,我来帮你搞定这个问题!首先得纠正下你目标字典里的小语法错误——你写的结构里有多余的括号和重复的键,正确的目标结构应该是每个l1元素对应一个包含所有l2元素的字典,每个l2元素再对应一个包含所有l3元素且值为0的字典,大概是这样:

{
    'a': {
        '1': {'d': 0, 'e': 0},
        '2': {'d': 0, 'e': 0},
        '3': {'d': 0, 'e': 0}
    },
    'b': {
        '1': {'d': 0, 'e': 0},
        '2': {'d': 0, 'e': 0},
        '3': {'d': 0, 'e': 0}
    }
}

你之前的代码问题出在两点:

  • 用zip(l1,l2,l3)完全不符合需求:zip是按索引把三个列表的元素一一配对(比如('a','1','d')、('b','2','e')),但你需要的是笛卡尔积式的全组合——每个l1元素要和所有l2元素组合,每个l2元素再和所有l3元素组合。
  • 推导式的结构不对,只有一层嵌套,没法生成三级字典,还会导致元素被覆盖。

正确的一行代码可以用三层嵌套的字典推导式实现,完全符合你的需求:

nd = {i: {j: {k: 0 for k in l3} for j in l2} for i in l1}

咱们拆解下这个推导式:

  1. 最外层:遍历l1的每个元素i,作为顶级键;
  2. 中间层:每个i对应一个字典,遍历l2的每个元素j作为第二层键;
  3. 最内层:每个j对应一个字典,遍历l3的每个元素k作为第三层键,值固定为0。

运行这段代码就能得到你想要的三级嵌套字典啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:05:51