0

私は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'}]

ここで、キーの順序が結果のキーの順序と異なることが簡単にわかります。

私の質問は、出力の辞書キーのリストにあるのと同じ順序のキーを表示する必要があるということです。

キーのリストの同じ順序を結果に設定するにはどうすればよいですか?

4

2 に答える 2

1

dict順序を覚えていません。ordereddictします; それを使用します。

残念ながら、リテラルは使用できません。使用するdictとすぐに順序が失われるからです。次の構文を使用できます。

from collections import OrderedDict
o = OrderedDict([("a", 1), ("b", 2)])
# `a` is first; `b` is second.
于 2015-03-27T06:28:47.380 に答える