2

xmlファイルをPythonElementTreeに解析する場合、Pythonは属性を辞書に格納するため、属性の順序が混同されます。

辞書の属性の順序を変更するにはどうすればよいですか?

4

4 に答える 4

6

XML属性は、定義上、順序付けられていません1。公式標準の段落3.1と比較してください。

1技術的には、属性リストは順序付けられていますが、順序は重要ではありません。つまり、ライター、トランスフォーマー、パーサーは自由に切り替えることができます。

于 2011-03-21T17:31:44.473 に答える
2

あなたの自己回答はあなたが長くて面倒だと言った通りです。する必要はありません。また、(1)キーが10個を超える場合、(2)dictのキーが予想より少ない場合も失敗します。

これを試して; それははるかに簡単です:

>>> ordered_keys = ('z', 'y', 'e', 'x', 'w') # possible keys, in desired order

注:上記の行は、必要なすべてのセットアップです。

>>> dic = {'z':'a', 'y':'b', 'x':'c', 'w':'d'} # actual contents of a dictionary
>>> for k in ordered_keys:
...     if k in dic: # avoid trouble if a key is missing
...         print k, dic[k]
...
z a
y b
x c
w d
>>>
于 2011-03-25T05:18:07.930 に答える
0

XMLは、ノードの属性の順序を定義しません。したがって、動作は問題ありません。属性の順序について仮定を立てる場合、その仮定は間違っています。順序付けはなく、いかなる種類の属性の順序付けも期待してはなりません。したがって、あなたの質問は無効です。

于 2011-03-21T17:30:46.877 に答える
0

辞書の内部で属性の順序を変更することはできません。派手なハッキングをしない限り、これは不可能です。

したがって、解決策は、必要な順序で属性に手動でアクセスするか、キー/アイテムのリストを作成して、必要な方法で並べ替えることです。

于 2011-03-23T01:33:15.697 に答える