Telegram Group & Telegram Channel
Упорядочены ли словари в Python?

Что значит «упорядоченный»?

Когда говорят об упорядоченности, важно понять контекст. Например:

— Если просят расставить коробки, порядок — по размеру;
— Если вы в очереди – порядок по времени прихода.

Если структура упорядоченная, она в каком-то смысле сохраняет свой внутренний порядок. А как со словарями?


Исторический обзор

До Python 3.6: словари не сохраняли никакого порядка при выводе или переборе. Параметры key: value могли выводиться в совершенно произвольном порядке.

Начиная с Python 3.6 словари начали сохранять порядок вставки — но это считалось технической деталью реализации, а не официально гарантированным свойством. Позднее это стало частью официальной спецификации языка.


Это значит, что словари упорядочены?

Частично — да:: словари сохраняют порядок добавления элементов. Это позволяет, например, при переборе ключей получать их в том же порядке, что при вставке.

Важное «но»: порядок не влияет на сравнение словарей:


a = {"x": 1, "y": 2}
b = {"y": 2, "x": 1}
a == b # True


То есть, равенство проверяется по парам ключ‑значение, а не по их порядку (в отличие от списка).


Почему обычный dict сравнивается по содержанию, а не по порядку?

— Оптимизация: словари предназначены для быстрой работы по ключу (хэширование);
— Благодаря «разделённой таблице» (split-table) в реализации CPython, словарь может одновременно эффективно хранить и порядке вставки, и хэш-структуру.

#основы
👌 — Если всё по красоте



tg-me.com/zen_of_python/4318
Create:
Last Update:

Упорядочены ли словари в Python?

Что значит «упорядоченный»?

Когда говорят об упорядоченности, важно понять контекст. Например:

— Если просят расставить коробки, порядок — по размеру;
— Если вы в очереди – порядок по времени прихода.

Если структура упорядоченная, она в каком-то смысле сохраняет свой внутренний порядок. А как со словарями?


Исторический обзор

До Python 3.6: словари не сохраняли никакого порядка при выводе или переборе. Параметры key: value могли выводиться в совершенно произвольном порядке.

Начиная с Python 3.6 словари начали сохранять порядок вставки — но это считалось технической деталью реализации, а не официально гарантированным свойством. Позднее это стало частью официальной спецификации языка.


Это значит, что словари упорядочены?

Частично — да:: словари сохраняют порядок добавления элементов. Это позволяет, например, при переборе ключей получать их в том же порядке, что при вставке.

Важное «но»: порядок не влияет на сравнение словарей:


a = {"x": 1, "y": 2}
b = {"y": 2, "x": 1}
a == b # True


То есть, равенство проверяется по парам ключ‑значение, а не по их порядку (в отличие от списка).


Почему обычный dict сравнивается по содержанию, а не по порядку?

— Оптимизация: словари предназначены для быстрой работы по ключу (хэширование);
— Благодаря «разделённой таблице» (split-table) в реализации CPython, словарь может одновременно эффективно хранить и порядке вставки, и хэш-структуру.

#основы
👌 — Если всё по красоте

BY Zen of Python


Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283

Share with your friend now:
tg-me.com/zen_of_python/4318

View MORE
Open in Telegram


Zen of Python Telegram | DID YOU KNOW?

Date: |

NEWS: Telegram supports Facetime video calls NOW!

Secure video calling is in high demand. As an alternative to Zoom, many people are using end-to-end encrypted apps such as WhatsApp, FaceTime or Signal to speak to friends and family face-to-face since coronavirus lockdowns started to take place across the world. There’s another option—secure communications app Telegram just added video calling to its feature set, available on both iOS and Android. The new feature is also super secure—like Signal and WhatsApp and unlike Zoom (yet), video calls will be end-to-end encrypted.

The Singapore stock market has alternated between positive and negative finishes through the last five trading days since the end of the two-day winning streak in which it had added more than a dozen points or 0.4 percent. The Straits Times Index now sits just above the 3,060-point plateau and it's likely to see a narrow trading range on Monday.

Zen of Python from us


Telegram Zen of Python
FROM USA