简体   繁体   English

如何基于嵌套的for循环创建多个词典?

[英]How do I create multiple dictionaries based on nested for loops?

Here is the output I am wanting: 这是我想要的输出:

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}

Note: Value1, Value2, and Value3 are all the same thing. 注意:Value1,Value2和Value3都是同一件事。 I am using this to just populate the dictionaries. 我用它来填充字典。

Here is what I am trying: 这是我正在尝试的:

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

Are you trying something like this?: 您是否正在尝试这样的事情?:

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 

Output: 输出:

{'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}}

So you want something like: 所以你想要像这样的东西:

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

demo: 演示:

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

Of course, with sequential integers as keys, you might consider indexing from 0 and using a list comprehension instead: 当然,使用顺序整数作为键,您可以考虑从0开始索引,并使用列表推导:

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

You can nest the for loops in a nested dictionary comprehension and create a two-level nested dictionary like this: 您可以将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)

Output: 输出:

{'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}}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM