dict のレイヤーを表すリストがあります。
layers = ('layer1', 'layer2', 'layer3')
これから、次のような辞書を動的に作成したいと思います。
data = {'layer1': {'layer2': {'layer3': ...}}}
3つのドットの位置に値を挿入できるようにしたい. また、リストを使用してこの値に動的にアクセスできるようにしたいと考えていlayers
ます。
dict のレイヤーを表すリストがあります。
layers = ('layer1', 'layer2', 'layer3')
これから、次のような辞書を動的に作成したいと思います。
data = {'layer1': {'layer2': {'layer3': ...}}}
3つのドットの位置に値を挿入できるようにしたい. また、リストを使用してこの値に動的にアクセスできるようにしたいと考えていlayers
ます。
この質問を入力しているときに、これを行う方法のアイデアを形成し始め、それを理解しました。だから、私の知識を必要とする人に共有するために、ここにあります. より良い方法を知っている場合は、さまざまなソリューションを投稿してください。
def create_deep_dict(value, layers):
data = {}
layer = layers[0]
if layers[1:]:
data[layer] = create_deep_dict(value, layers[1:])
else:
data[layer] = value
return data
def deep_dict_value(data, layers):
layer = layers[0]
if layers[1:]:
return deep_dict_value(data[layer], layers[1:])
else:
return data[layer]
したがって、これらの関数を次のように使用する場合:
layers = ['layer1', 'layer2', 'layer3']
print 'create deep dict:'
data = create_deep_dict(layers, 'hello')
print data
print '\nretrieve value from deep dict:'
print deep_dict_value(layers, data)
次のように出力されます。
create deep dict:
{'layer1': {'layer2': {'layer3': 'hello'}}}
retrieve value from deep dict:
hello