Python 如何基于嵌套for循环创建多个字典?

Python 如何基于嵌套for循环创建多个字典?,python,dictionary,iteration,Python,Dictionary,Iteration,以下是我想要的输出: level1 = {'value1':0, 'value2':0, 'value3':0} level2 = {'value1':0, 'value2':0, 'value3':0} level3 = {'value1':0, 'value2':0, 'value3':0} level3 = {'value1':0, 'value2':0, 'value3':0} 注意:值1、值2和值3都是相同的。我用这个来填充字典 以下是我正在尝试的: for x in range (

以下是我想要的输出:

level1 = {'value1':0, 'value2':0, 'value3':0}
level2 = {'value1':0, 'value2':0, 'value3':0}
level3 = {'value1':0, 'value2':0, 'value3':0}
level3 = {'value1':0, 'value2':0, 'value3':0}
注意:值1、值2和值3都是相同的。我用这个来填充字典

以下是我正在尝试的:

for x in range (1,6):
    level = 'level%d' % x
    for iteration in range(1, 4):
        value = 'value%d' % iteration
    level = {}
        level['value'] = 0

你在尝试这样的事情吗

dic={}
for x in range (1,6):
    level = 'level%d' % x 
    dic[level] = {}
    for iteration in range(1, 4): 
        value = 'value%d' % iteration
        dic[level][value] = 0 

print dic 
输出:

{'level1': {'value1': 0, 'value2': 0, 'value3': 0},
 'level2': {'value1': 0, 'value2': 0, 'value3': 0},
 'level3': {'value1': 0, 'value2': 0, 'value3': 0},
 'level4': {'value1': 0, 'value2': 0, 'value3': 0},
 'level5': {'value1': 0, 'value2': 0, 'value3': 0}}

你在尝试这样的事情吗

dic={}
for x in range (1,6):
    level = 'level%d' % x 
    dic[level] = {}
    for iteration in range(1, 4): 
        value = 'value%d' % iteration
        dic[level][value] = 0 

print dic 
输出:

{'level1': {'value1': 0, 'value2': 0, 'value3': 0},
 'level2': {'value1': 0, 'value2': 0, 'value3': 0},
 'level3': {'value1': 0, 'value2': 0, 'value3': 0},
 'level4': {'value1': 0, 'value2': 0, 'value3': 0},
 'level5': {'value1': 0, 'value2': 0, 'value3': 0}}

所以你想要的是:

keys = ('value1','value2','value3')
{k:dict.fromkeys(keys,0) for k in range(1,4)}
演示:

当然,以序列整数作为关键字,您可以考虑从0索引,并使用列表理解来代替:

[dict.fromkeys(keys,0) for _ in range(3)]

所以你想要的是:

keys = ('value1','value2','value3')
{k:dict.fromkeys(keys,0) for k in range(1,4)}
演示:

当然,以序列整数作为关键字,您可以考虑从0索引,并使用列表理解来代替:

[dict.fromkeys(keys,0) for _ in range(3)]

您可以将
for
循环嵌套在嵌套字典中,并创建两级嵌套字典,如下所示:

from pprint import pprint

nested_dict = {'level%d' % level:
                    {'value%d' % value: 0 for value in range(1, 4)}
                                                 for level in range(1, 6)}
pprint(nested_dict)
输出:

{'level1': {'value1': 0, 'value2': 0, 'value3': 0},
 'level2': {'value1': 0, 'value2': 0, 'value3': 0},
 'level3': {'value1': 0, 'value2': 0, 'value3': 0},
 'level4': {'value1': 0, 'value2': 0, 'value3': 0},
 'level5': {'value1': 0, 'value2': 0, 'value3': 0}}
{'level1':{'value1':0,'value2':0,'value3':0},
'level2':{'value1':0,'value2':0,'value3':0},
'level3':{'value1':0,'value2':0,'value3':0},
'level4':{'value1':0,'value2':0,'value3':0},
'level5':{'value1':0'value2':0'value3':0}

您可以将
for
循环嵌套在嵌套字典中,并创建两级嵌套字典,如下所示:

from pprint import pprint

nested_dict = {'level%d' % level:
                    {'value%d' % value: 0 for value in range(1, 4)}
                                                 for level in range(1, 6)}
pprint(nested_dict)
输出:

{'level1': {'value1': 0, 'value2': 0, 'value3': 0},
 'level2': {'value1': 0, 'value2': 0, 'value3': 0},
 'level3': {'value1': 0, 'value2': 0, 'value3': 0},
 'level4': {'value1': 0, 'value2': 0, 'value3': 0},
 'level5': {'value1': 0, 'value2': 0, 'value3': 0}}
{'level1':{'value1':0,'value2':0,'value3':0},
'level2':{'value1':0,'value2':0,'value3':0},
'level3':{'value1':0,'value2':0,'value3':0},
'level4':{'value1':0,'value2':0,'value3':0},
'level5':{'value1':0'value2':0'value3':0}

根据需要,可以使用defaultdict或dict理解进一步简化。另外,对于新代码,
str.format
优于
%
。我不熟悉嵌套字典。。如何访问字典级别3的值1?使用
打印dic['level3']['value1']
谢谢@hek2mgl这正是我要找的。我感谢你的帮助!根据需要,可以使用defaultdict或dict理解进一步简化。另外,对于新代码,
str.format
优于
%
。我不熟悉嵌套字典。。如何访问字典级别3的值1?使用
打印dic['level3']['value1']
谢谢@hek2mgl这正是我要找的。我感谢你的帮助!看起来不错,但如果超过3或5级,可能会变得混乱;)@hevnsnt——我不确定我是否明白。你是什么意思?看起来不错,但如果超过3或5级,可能会变得混乱;)@hevnsnt——我不确定我是否明白。什么意思?