Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.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嵌套字典分配不起作用_Python_Dictionary - Fatal编程技术网

Python嵌套字典分配不起作用

Python嵌套字典分配不起作用,python,dictionary,Python,Dictionary,有问题的代码是。基本上,除了函数外,其他一切都正常工作,函数接受一个SRE_Match对象并对其进行解析,然后将dict中提取的变量分配给全局定义的dict中的一个键。但是在创建了这个新键之后,当它打印与该键关联的项时,它抛出一个键错误,表示该键未定义!我不知道这是怎么回事 addClient()的代码: 好吧,答案应该是显而易见的。正如TesselatingHeckler所建议的,当info为非真时,会弹出错误,可以通过如下方式进行修复: def addClient(client, info,

有问题的代码是。基本上,除了函数外,其他一切都正常工作,函数接受一个SRE_Match对象并对其进行解析,然后将dict中提取的变量分配给全局定义的dict中的一个键。但是在创建了这个新键之后,当它打印与该键关联的项时,它抛出一个键错误,表示该键未定义!我不知道这是怎么回事

addClient()的代码:


好吧,答案应该是显而易见的。正如TesselatingHeckler所建议的,当
info
为非真时,会弹出错误,可以通过如下方式进行修复:

def addClient(client, info,medium):
if info:
    info = info.group(0).split(' ')
    if medium == 'text':
        db['clients']['text'][client] = {'number':info[0],'os':info[1]}
    elif medium == 'email':
        db['clients']['email'][client] = {'address':info[0],'os':info[1]}
    elif medium == 'pm':
        db['clients']['pm'][client] = {'os':info[0]}
    print(db['clients'][medium][client])

您需要展示一个演示问题的自包含示例。请在问题中发布相关代码,并说明到目前为止您已采取了哪些调试步骤。然后,
medium
不会影响您的三种情况中的任何一种,或者
info
为false。由于您有通过函数的路径,这可能导致未设置关键点,但您尝试打印它,因此很可能您遇到了其中一条路径。
medium
是这三条路径中的一条,我可以保证。
def addClient(client, info,medium):
if info:
    info = info.group(0).split(' ')
    if medium == 'text':
        db['clients']['text'][client] = {'number':info[0],'os':info[1]}
    elif medium == 'email':
        db['clients']['email'][client] = {'address':info[0],'os':info[1]}
    elif medium == 'pm':
        db['clients']['pm'][client] = {'os':info[0]}
    print(db['clients'][medium][client])