0

ここに私が望んでいる出力があります:

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}

注: Value1、Value2、および Value3 はすべて同じものです。これを使用して、辞書を作成するだけです。

ここに私がしようとしているものがあります:

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

3 に答える 3

1

したがって、次のようなものが必要です。

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

デモ:

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

もちろん、連続する整数をキーとして使用する場合は、0 からインデックスを作成し、代わりにリスト内包表記を使用することを検討できます。

[dict.fromkeys(keys,0) for _ in range(3)]
于 2013-04-30T14:26:01.840 に答える
1

ネストされた辞書内包for表記でループをネストし、次のように 2 レベルのネストされた辞書を作成できます。

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}}
于 2013-04-30T17:06:13.820 に答える