Openerp 如何在复杂字典中获取整数值

Openerp 如何在复杂字典中获取整数值,openerp,odoo-8,Openerp,Odoo 8,这里abc的值是一个整数,total是一个包含其他字典的字典 total[div]['total_transport_allowance'] = abc 此错误显示为:“KeyError:None” 请帮忙 我想从这句话中得到abc的值到关键的“总交通津贴” def print\u excel\u报告(self、cr、uid、id、data、context=None): 结果=自身。获取行(cr、uid、ID、数据) 文件名='PayrollRegister.xls' 工作簿=xlwt

这里abc的值是一个整数,total是一个包含其他字典的字典

    total[div]['total_transport_allowance'] = abc
此错误显示为:
“KeyError:None”
请帮忙

我想从这句话中得到abc的值到关键的“总交通津贴”

def print\u excel\u报告(self、cr、uid、id、data、context=None):
结果=自身。获取行(cr、uid、ID、数据)
文件名='PayrollRegister.xls'
工作簿=xlwt.workbook(encoding=“UTF-8”)
工作表=工作簿。添加工作表('Payroll Register',单元格\u overwrite\u ok=True)
style=xlwt.easyxf('font:height 400,bold-True,name-Arial;align:horiz-center,vert-center;borders:top-medium,right-medium,bottom-medium,left-medium'))
a=范围(1,10)
行=1
col=0
页眉=[“部门”、“基本”、“交通津贴”]
style2=xlwt.easyxf('字体:粗体1')
总计={}
对于索引,枚举中的数据(结果):
div=data.get('Division',False)
abc=数据。get('transport_Amount',False)或0
如果是div:
如果div总计:
总计[div]['total_basic']=总计[div]['total_basic']+数据。获取('basic',0)
总计[部门][‘交通津贴总额’]=总计[部门][‘交通津贴总额’]+abc
其他:
总计[div]={}
总计[div]['total_basic']=data.get('basic',0)
总计[div][‘交通津贴总额’]=abc
其他:
如果总数为“未定义”:
总计['Undefined']['total_basic']=total['Undefined']['total_basic']+data.get('basic',0)
总计[部门][‘交通津贴总额’]=总计[部门][‘交通津贴总额’]+abc
其他:
总计['Undefined']={}
总计['Undefined']['total_basic']=data.get('basic',0)
总计[div][‘交通津贴总额’]=abc
.......
.....

要想从所有的反对票中拯救一些东西:

您有一个if语句来检查
div
的真实性。如果为false,则使用div访问total

例如:

if div:
    # stuff
else:
    # stuff
    total[div]['total_transport_allowance'] = abc
因为total没有键div,所以这不起作用


您需要类似于
total[div]={}
的内容,因为
div
None
,所以您会收到此错误:

如果div:
....
....
其他:
...
...
#这里的div为None或False。。
#您不能将其用作密钥!!
总计[div][‘交通津贴总额’]=abc
首先需要在这里定义键。那么在哪里呢 当div为None时,您希望放入abc

编辑

我不知道div不在
数据中时的值应该是多少。get('Division',False)

div=data.get('Division',False)
...
...
如果是div:
.....
其他:
#将值分配给div
div='新值'
#在那里添加字典
总计[div]={}
如果总数为“未定义”:
....
...
...
这奏效了。。 我以前也这样做过

total['Undefined']['total_transport_allowance'] = {}
还有。。
感谢大家的帮助

KeyError是None意思是没有定义的字典。div是一个应该定义的字典。

请向我们展示有关该问题的更多代码。尤其是
div
abc
是什么。理想情况下,这是一个最小的示例,它本身可以运行,并且仍然显示您的问题。abc的值为0。div是一个内部字典。从读取您的错误来看,
div
是None。发布一个真实的…尝试一个最低限度的例子来重现你的错误。请阅读以下内容:。您需要付出一些努力来解决这个问题。它是否会创建一个新字段作为total-->div-->total\u transport\u allowance,因为在其他情况下,它工作正常。它只在“total_transport_Allowment”的情况下显示错误,因为这里有些值是空的,而在其他情况下,没有值是空的。
total[div]={}
的出现可能浪费了我解释的时间。当div有不同的值时,total[div]=0位于if语句的另一个分支中。如何首先定义键?由于复杂的字典,所以有很多困惑请检查我的编辑,希望这能给你一个关于doTchi的想法,这部分工作正常。在某些情况下,
total\u transport\u allowment
的值为none,这会导致
none错误
,谢谢您的帮助
total['Undefined']['total_transport_allowance'] = {}