在python 3中创建嵌套的dicts

时间:2016-08-27 09:59:42

标签: python python-3.x dictionary

我正在尝试使用以下代码创建以下嵌套的dict结构{0: {0: 1}, 1: {0: 1, 1: 1}}

feats = {}
for i in range(2):
    feat = feats.get(i, {})
    for j in range(i+1):
        feat[j] = 1

但我得到feats = {}。这是为什么?感谢。

2 个答案:

答案 0 :(得分:3)

这里的问题是,您没有在feat中存储feats值,因此在每次迭代后它都会丢失。在迭代结束时,feats为空。

您可以修改以下代码:

feats = {}
for i in range(2):
    feat = feats.get(i, {})
    for j in range(i+1):
        feat[j] = 1
    feats[i] = feat

print(feats)

输出:

{0: {0: 1}, 1: {0: 1, 1: 1}}

答案 1 :(得分:0)

首先,我运行了你的程序并打印了专辑,它打印了{0:1,1:1}而不是{}

第二件事,我可以从你的要求中理解的是,通过一般的方式,在循环遍历一系列数字时,你希望将该数字作为键和值作为包含键值对的字典,其中键的数量从0到那个数字和值为1.如果我错了,请纠正我。

所以正确的程序是:

feats = {} 
for i in range(2): 
   feats[i] = feats.get(i, {}) 
   for j in range(0,i+1): 
      feats[i][j] = 1
print feats 

你可以用范围内的任何数字替换2并相应地得到答案。