Как заказать атрибуты элемента xml в Python? - PullRequest
2 голосов
/ 21 марта 2011

При синтаксическом анализе файла xml в Python ElementTree порядок атрибутов смешивается, поскольку Python сохраняет атрибуты в словаре.

Как изменить порядок атрибутов в словаре?

Ответы [ 4 ]

6 голосов
/ 21 марта 2011

Атрибуты XML по определению неупорядочены 1 , сравните пункт 3.1 официального стандарта.

1 Технически списки атрибутов упорядочены, но порядок не имеет значения, то есть авторы, преобразователи и анализаторы могут свободно переключать его по своему усмотрению.

2 голосов
/ 25 марта 2011

Ваш самоответ, как вы сказали, длинный и громоздкий.Это не должно быть.Также произойдет сбой, если (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
>>>
0 голосов
/ 23 марта 2011

Вы не можете изменить порядок атрибутов внутри словаря.Это невозможно, если вы не совершите какой-нибудь необычный взлом.

Поэтому решение состоит в том, чтобы вручную получить доступ к атрибутам в том порядке, в котором вы их хотите, или создать список ключей / элементов и отсортировать их так, как вы хотите.Вы хотите.

0 голосов
/ 21 марта 2011

XML не определяет какой-либо порядок атрибутов узла.Так что поведение в порядке.Если вы делаете предположения о порядке следования атрибутов, тогда ваши предположения неверны.Здесь нет порядка, и вы не должны ожидать какого-либо порядка атрибутов.Так что ваш вопрос недействителен.

...