Когда вы не указываете порядок - почему результат меняется? - PullRequest
0 голосов
/ 25 октября 2019

Я нахожусь на очень ранних стадиях изучения Python. Этот вопрос больше связан с базовым пониманием, чем с кодированием - надеюсь, я правильно его пометил. Я читаю свою курсовую работу и там написано:

"Запустите программу, которая ниже отображает ... Отступ и интервал между парами ключ-значение просто обеспечивает большую читаемость. Примечаниеэтот порядок не сохраняется в тексте при печати. ​​"

Я знаю, что могу указать, чтобы порядок каждый раз был одинаковым. Я могу это сделать. Я хочу знать, когда вы пишете программу и запускаете ее, почему результаты возвращаются в другом порядке, если они не указаны? Это из-за способа обработки в процессоре?

Спасибо.

1 Ответ

0 голосов
/ 25 октября 2019

Ответ не имеет никакого отношения к Python и всему, что связано со структурами данных - это поведение универсально и ожидается для всех языков, в которых реализована аналогичная структура данных. В Python это называется словарь, на других языках это называется карта или хэш-карта или хэш-таблица. Есть несколько других похожих имен для той же базовой структуры данных.

Словарь Python является коллекцией Associative , в отличие от списка Python (который является просто массивом), где егоэлементы непрерывны в памяти.

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

По сути, чтобы определить «индекс», в котором связанное значение должно находиться в ассоциативном контейнере, вы берете ключхэшируйте, придумайте какой-нибудь способ отображения хеша на число и рассматривайте это число как индекс. Так как маловероятно, что два разных объекта выдают один и тот же хеш, теоретически это может произойти - что более вероятно, так это то, что ваша процедура хеширования в число отображает два уникальных хеша на одно и то же число - вв любом случае подобные коллизии могут происходить, и существуют стратегии для обработки этих коллизий .

Дело в том, что хэш ключа определяет порядок, в котором соответствующее значение появляется вколлекция - следовательно, нет внутреннего порядка .

...