Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 Python dictionary:如何在执行时获取输入字符串并将dict名称定义为字符串中的单词的动态字典_Python 2.7_Python 3.x_Dictionary - Fatal编程技术网

Python 2.7 Python dictionary:如何在执行时获取输入字符串并将dict名称定义为字符串中的单词的动态字典

Python 2.7 Python dictionary:如何在执行时获取输入字符串并将dict名称定义为字符串中的单词的动态字典,python-2.7,python-3.x,dictionary,Python 2.7,Python 3.x,Dictionary,我想创建一个函数,它包含3个参数,如下所示 path = "['pma']['device']['clock']" key = 'key' value = 'value' 该函数应将这些值作为输入,并返回一个字典,其中包含子字典和键,并在dict末尾添加值 Expected output = {'pma':{'device':{'clock':{'key':'value'}}}} 我面临的挑战是,如何在执行时获取输入字符串并将dict名称定义为字符串中的单词的动态字典。请参阅此代码 path

我想创建一个函数,它包含3个参数,如下所示

path = "['pma']['device']['clock']"
key = 'key'
value = 'value'
该函数应将这些值作为输入,并返回一个字典,其中包含子字典和键,并在dict末尾添加值

Expected output = {'pma':{'device':{'clock':{'key':'value'}}}}
我面临的挑战是,如何在执行时获取输入字符串并将dict名称定义为字符串中的单词的动态字典。请参阅此代码

path = "['pma']['device']['clock']"
key = 'key'
value = 'value'
pl = path.replace('][', ',').replace(']', '').replace('[','').replace("'","").split(',')
res = {}
for item in reversed(pl):
    if item == pl[-1]:
        res[pl[-1]]={key:value}
    else :
        res = {item: res}
输出:

{'pma': {'device': {'clock': {'key': 'value'}}}}

使用
re.findall()
函数和递归
makeDictFromPath()
函数的解决方案:

import re

path = "['pma']['device']['clock']"
key = 'key'
val = 'value'

def makeDictFromPath(result, path):
    result[path[0]] = {}
    if len(path) > 1: return makeDictFromPath(result[path[0]], path[1:])

    return result

result = {}
keys = re.findall(r'\[\'(\w+)\'\]', path)

makeDictFromPath(result, keys).get('clock', {})[key] = val
print(result)
输出:

{'pma': {'device': {'clock': {'key': 'value'}}}}

字典内有子字典和键,字典末尾有附加值-非常不清楚,根据您的输入显示预期的输出非常感谢您的帮助。还有一个建议,当分支中有列表时,我该怎么办,例如,path=['pma']['device']['clock'][0]['address-pool']非常感谢你的帮助。还有一个建议,当分支中有一个列表时,我会怎么做,例如,path=['pma']['device']['clock'][0]['address-pool']@UnnikrishnanV,您应该指定如何查看新输入的预期输出