питон: сортировка - PullRequest
       8

питон: сортировка

2 голосов
/ 13 апреля 2010

привет, я делаю цикл, чтобы я мог получить данные, но так как это сортировка по алфавиту, а не так, как я нажимаю на нее ...

можно ли как-то отключить алфавитную сортировку?

вот как мне это сделать

data = {}
for item in container:
  data[item] = {}
  ...
  for key, val in item_container.iteritems():
    ...
    data[item][key] = val

что дайте мне что-то вроде этого

data = {
  A : { K1 : V1, K2 : V2, K3 : V3 },
  B : { K1 : V1, K2 : V2, K3 : V3 },
  C : { K1 : V1, K2 : V2, K3 : V3 }
}

и я хочу, чтобы все было так, как я шел по петле, например

data = {
  B : {K2 : V2, K3 : V3, K1 : V1},
  A : {K1 : V1, K2 : V2, K3 : V3},
  C : {K3 : V3, K1 : V1, K2 : V2}
}

Ответы [ 3 ]

5 голосов
/ 13 апреля 2010

Если вам действительно нужно использовать словарь, а не список, взгляните на новый OrderedDict (Python 3.1, скоро также будет доступен в Python 2.7) Это сохранит порядок, в котором были добавлены его элементы.

from collections import OrderedDict
data = OrderedDict()
for item in container:
  data[item] = OrderedDict()
  ...
  for key, val in item_container.iteritems():
    ...
    data[item][key] = val
3 голосов
/ 13 апреля 2010

Вы не должны полагаться на порядок сортировки данных в dict; поскольку это просто набор пар ключ / значение, упорядочение не гарантируется базовой реализацией и может измениться в будущей версии.

0 голосов
/ 13 апреля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...