它使用for 循环获取元素并创建字典,它使用start 获取嵌套字典以在下一个循环中创建下一个字典。
编辑:我将名称 start 更改为 node,这样可以更好地描述此变量中的内容。它用于在此结构中更深入地移动,例如在树或图中从节点移动到节点。
x = {}
list1 = ['thing1','thing2','thingn']
list2 = ['element1','element2','elementn']
node = x # starting node
for item in list1:
node[item] = {} # create new sub-dictionary
node = node[item] # move to new sub-dictionary
node = x # starting node
for item in list2:
node[item] = {} # create new sub-dictionary
node = node[item] # move to new sub-dictionary
print(x)
print(x['thing1']['thing2']['thingn'])
x['thing1']['thing2']['newdata'] = "Hello World!"
print(x['thing1']['thing2']['newdata'])
编辑:同函数
def add(start_node, levels):
node = start_node # starting node
for item in levels:
node[item] = {} # create new sub-dictionary
node = node[item] # move to new sub-dictionary
#return node
x = {}
list1 = ['thing1','thing2','thingn']
list2 = ['element1','element2','elementn']
add(x, list1)
add(x, list2)
print(x)
print(x['thing1']['thing2']['thingn'])
x['thing1']['thing2']['newdata'] = "Hello World!"
print(x['thing1']['thing2']['newdata'])
使用.split('.')可以使用字符串'element1.element2.elementn'
add(x, 'element1.element2.elementn'.split('.'))
编辑:类似于获取价值
def add(node, levels):
'''node: starting node'''
for item in levels:
node[item] = {} # create new sub-dictionary
node = node[item] # move to new sub-dictionary
#return node
def get(node, levels):
'''node: starting node'''
for item in levels:
node = node[item] # move to new sub-dictionary
return node
x = {}
add(x, ['thing1','thing2','thingn'])
add(x, 'element1.element2.elementn'.split('.'))
x['thing1']['thing2']['newdata'] = "Hello World!"
print(x['thing1']['thing2']['newdata'])
print( get(x, ['thing1', 'thing2', 'newdata']) )
print( get(x, 'thing1.thing2.newdata'.split('.') ) )