我使用的是python 2.7.X版本,我需要按照与输出相同的顺序显示字典列表的结果。
创建字典列表:
for acc_data in acc_pool.browse(cr,uid,acc_ids_in):
for line in acc_data.invoice_line:
c+=1
lst_data2.append({
'SupplierName':acc_data.partner_id.name or '',
'SupplierBRN':acc_data.partner_id.com_reg_no1 or '',
'InvoiceDate':acc_data.date_invoice or '',
'InvoiceNumber':acc_data.number or '',
'ImportDeclarationNo':'',
'LineNumber':c,
'ProductDescription':line.product_id.name or '',
'PurchaseValueMYR':line.price_unit or 0.00,
'GSTValueMYR':'',
'TaxCode':line.invoice_line_tax_id.name or '',
'FCYCode':'',
'PurchaseFCY':'',
'GSTFCY':'',
})
结果:
> lst_data2 [{'ProductDescription': u'Ink Cartridge', 'SupplierBRN': '', 'ImportDeclarationNo': '', 'GSTValueMYR': '', 'SupplierName': u'Vicking Direct', 'GSTFCY': '', 'TaxCode': u'Purchase Tax 15.00%', 'InvoiceDate': '2015-03-24', 'FCYCode': '', 'PurchaseFCY': '', 'PurchaseValueMYR': 58.0, 'LineNumber': 1, 'InvoiceNumber': u'EXJ/2015/002'}, {'ProductDescription': u'Toner Cartridge', 'SupplierBRN': '', 'ImportDeclarationNo': '', 'GSTValueMYR': '', 'SupplierName': u'Vicking Direct', 'GSTFCY': '', 'TaxCode': u'OTAX X', 'InvoiceDate': '2015-03-24', 'FCYCode': '', 'PurchaseFCY': '', 'PurchaseValueMYR': 65.0, 'LineNumber': 2, 'InvoiceNumber': u'EXJ/2015/002'}]
在这里,您可以轻松看到我的键顺序与结果中键的顺序不同。
我的问题是我需要在输出中的字典键列表中显示相同的键顺序。
如何在结果中设置相同的键列表顺序?
答案 0 :(得分:1)
dict
不记得订单。 ordereddict
确实如此;用那个。
很遗憾,您无法使用dict
字面值,因为只要您这样做,就会失去订购。您可以使用以下语法:
from collections import OrderedDict
o = OrderedDict([("a", 1), ("b", 2)])
# `a` is first; `b` is second.
答案 1 :(得分:0)
我已解决了我发布的问题。
我们需要添加python库我们的文件并按如下方式使用它。
from collections import OrderedDict
for acc_data in acc_pool.browse(cr,uid,acc_ids_in):
c=0
for line in acc_data.invoice_line:
if line.invoice_line_tax_id:
c+=1
lst_data2.append(OrderedDict([
('SupplierName',acc_data.partner_id.name or ''),
('SupplierBRN',acc_data.partner_id.com_reg_no or ''),
('InoiveDate',acc_data.date_invoice or ''),
('InvoiceNumber',acc_data.number or ''),
('ImportDeclarationNo',''),
('LineNumber',c),
('ProductDescription',line.product_id.name or ''),
('PurchaseValueMYR',line.price_unit or 0.00),
('GSTValueMYR',''),
('TaxCode',line.invoice_line_tax_id.name or ''),
('FCYCode',''),
('PurchaseFCY',''),
('GSTFCY',''),
]))
我希望这对某些人有用。 :)