首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否可以迭代地向字典添加另一个级别的键,以生成嵌套字典?

是否可以迭代地向字典添加另一个级别的键,以生成嵌套字典?
EN

Stack Overflow用户
提问于 2020-12-16 17:17:35
回答 2查看 33关注 0票数 1

所以我的想法是以这样的方式生成一个字典:

代码语言:javascript
运行
复制
my_dict = {}

for x in range(len(something)):
   for y in range(len(something_else)):
        my_dict[x] = {}
        my_dict[x][y] = {key: value}

然而,当我尝试这样做时,我总是得到错误消息:

如果我使用字符串而不是整数,则KeyError: 0或KeyError:'0‘。

你知道我可能做错了什么吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-12-16 17:20:22

做你正在做的事情,你在每个y循环中“擦除”my_dict[x]

尝试:

代码语言:javascript
运行
复制
my_dict = {}

for x in range(len(something)):
   for y in range(len(something_else)):
        d = my_dict.setdefault(x, {})
        d[y] = {key: value}

或者:

代码语言:javascript
运行
复制
my_dict = {}

for x in range(len(something)):
    my_dict[x] = {}
    for y in range(len(something_else)):
        my_dict[x][y] = {}
        for z in range(len(other)):
            my_dict[x][y][z] = {key: value}
票数 2
EN

Stack Overflow用户

发布于 2020-12-16 17:38:18

您可以使用collections.defaultdict轻松创建任意嵌套的字典

代码语言:javascript
运行
复制
from collections import defaultdict

make_dict = lambda: defaultdict(make_dict)
my_dict = make_dict()
代码语言:javascript
运行
复制
my_dict[1][2][3] = 4  # wrap this inside a nested loop as deep as you like
my_dict

defaultdict(<function __main__.<lambda>()>,
            {1: defaultdict(<function __main__.<lambda>()>,
                         {2: defaultdict(<function __main__.<lambda>()>,
                                      {3: 4})})})
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65320409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档