Почему словарные значения не находятся в вставленном порядке?

Когда я объявляю список 1,2,3,4, и я что-то делаю с ним, даже просто печатаю, я возвращаюсь к той же последовательности 1,2,3,4.

Но когда я делаю что-либо со словарями, они всегда меняют последовательность чисел, как будто она сортируется в скрученном виде, я не могу понять.

  • Таинственный для цикла в python
  • Изменение имени ключа в словаре
  • пифонический формат для индексов
  • Функция поиска последовательности python
  • Список расщепления Python на основе недостающих чисел в последовательности
  • python: получить количество элементов из списка (последовательность) с определенным условием
  • test1 = [4,1,2,3,6,5] print test1 test2 = {"c":3,"a":1,"b":2,"d":4} print test2 [4, 1, 2, 3, 6, 5] {'a': 1, 'c': 3, 'b': 2, 'd': 4} 

    Как в мире «a» стал первым элементом и «c», даже если он в алфавитном порядке сортировал словарь, он должен был быть 1,2,3,4 или a, b, c, d не 1,3,2, 4. wT? F @! $! @ $ # @!

    Итак, как мне печатать, получать значения из словаря без изменения позиций элементов.?

  • Как слить несколько dicts с одним ключом?
  • различия между «d = dict ()» и «d = {}»
  • Как добавить несколько значений в ключ словаря в python?
  • Создание словарных клавиш на лету
  • Переписывая текстовый файл для оценки, чтобы убедиться, что он имеет только последние 4 балла (python)
  • Удаление дубликатов из словаря
  • 6 Solutions collect form web for “Почему словарные значения не находятся в вставленном порядке?”

    Словари в Python по определению не упорядочены . Используйте OrderedDict если вам нужен порядок, в который были вставлены значения (доступно в Python 2.7 и 3.x).

    порядок сортировки в словаре не определен! Не полагайтесь на это ни на что. Ищите сортированный словарь, если вы действительно хотите отсортированный словарь, но обычно вам он не нужен.

    Примеры:

    • python 2.7, он встроен в модуль коллекций
    • В Django отправлен SortedDict
    • 2.4-2.7 вы можете использовать модуль orderdict, вы можете установить pip или easy_install it

    Прежде чем вы разозлитесь и расстроены, возможно, вам следует прочитать о том, что такое словарь на самом деле и как он работает:

    http://docs.python.org/library/stdtypes.html#mapping-types-dict

    Python dicts использует хэш-таблицу в качестве основного механизма хранения. Это означает, что из ключа, который вы предоставляете, генерируется хэш-ключ. Нет никаких гарантий относительно порядка с этими хэш-ключами. Записи в словаре выбираются в последовательном порядке их местоположения в основной хеш-таблице при запросе значений (), keys () или items ().

    Преимущество использования хэш-таблицы заключается в том, что она чрезвычайно быстрая. В отличие от класса map из c ++, который использует механизм хранения красно-черного дерева (который сортируется по необработанным ключам), хеш-таблицу не нужно постоянно реструктурировать, чтобы она была эффективной. Дополнительные сведения о хэш-таблицах см. В следующих разделах:

    http://en.wikipedia.org/wiki/Hash_table

    Как и другие плакаты, посмотрите OrderedDict, если вам нужен словарь, отсортированный по ключевым словам.

    Удачи!

    Ясно, что вы знаете о списках. Вы можете запросить элемент в i-м индексе списка. Это потому, что списки упорядочены.

     >>> [1,2,3,4] == [1,4,3,2] False 

    В этом контексте вы можете думать о словарях, но там, где индекс является ключевым. Поэтому два словаря равны, если соответствующие значения всех ключей в обоих словарях одинаковы (если в одном словаре есть ключи, а другой нет, то два не равны). Таким образом:

     >>> {1:'a', 2:'b'} == {2:'b', 1:'a'} True 

    Дальнейшие мелочи

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

    Надеюсь это поможет

    Словари не сортируются. Это хорошо документировано. Не полагайтесь на упорядочение словарей.

    Если вы хотите видеть записи в порядке. что-то вроде:

     test2 = {"c":3,"a":1,"b":2,"d":4} ks = test2.keys() ks.sort() for key in ks: print key + ':' + str(test2[key]) 

    (вырезать, вставить, по вкусу)

    Python - лучший язык программирования в мире.