Как я могу получить данные с заказом в словаре python? - PullRequest
1 голос
/ 16 января 2020

Я хочу получить ключи в моем заказе. Но он не работает со словарем и Collections.OrderedDict.

from collections import OrderedDict

data = OrderedDict({
  "Name1": "value1",
  "Name2": "value2"
})

for key in data.keys():
  print(key)

Этот код показывает, что Name3 Name4 .... У него нет никакого заказа. Мои данные не имеют алфавитный порядок в ключах, и я должен получить ключи в моем порядке.

Я обнаружил, что словарь разработан не по порядку. Тогда какие структуры я могу использовать с парой ключ-значение? Или есть способ использовать словарь в произвольном порядке? (порядок ввода ..?)

Ответы [ 2 ]

2 голосов
/ 16 января 2020

Вам необходимо изменить структуру вашего заказного словаря с этого

data = OrderedDict({
  "Name1": "value1",
  "Name2": "value2",
  ...
})

на этот

data = OrderedDict([('Name1', 'value1'), ('Name2', 'Value2')])

0 голосов
/ 16 января 2020

tl; dr: используйте Python 3.7 или выше.


dict s в Python 3.7 и выше всегда заказываются . Это относится ко всем видам итераций:

Словари сохраняют порядок вставки. Обратите внимание, что обновление ключа не влияет на порядок. Ключи, добавленные после удаления, вставляются в конце.

Изменено в версии 3.7: Порядок словаря гарантированно является порядком вставки.

Этот также применяется к popitem() method :

Изменено в версии 3.7: Порядок LIFO теперь гарантирован. В предыдущих версиях popitem () возвращал произвольную пару ключ / значение.

https://docs.python.org/3/library/stdtypes.html#dict .popitem

...