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