Развёрнутое пояснение
1️⃣Множество 𝚜 = {"𝚊", "𝚋", "𝚌"} содержит три строки, но их внутренний порядок зависит от хеш-функции.
2️⃣В отличие от целых чисел (где 𝚑𝚊𝚜𝚑(𝚗) == 𝚗), для строк хеш вычисляется с использованием случайного сида, который меняется при каждом запуске интерпретатора.
3️⃣Три вызова 𝚜.𝚙𝚘𝚙() извлекают элементы в текущем внутреннем порядке — это может быть ["𝚋", "𝚌", "𝚊"], ["𝚊", "𝚌", "𝚋"], ["𝚌", "𝚋", "𝚊"] и так далее.
4️⃣Сравнение с ["𝚊", "𝚋", "𝚌"] иногда даёт True, иногда False.
Почему это важно
Задача показывает, что «неупорядоченность» множеств — не абстракция, а реальное поведение, особенно для строк. Код, который случайно работал на целых числах, может сломаться при переходе на строковые ключи. Если порядок важен — используйте 𝚜𝚘𝚛𝚝𝚎𝚍(𝚜) или другую структуру данных.
Post #4588
973
- ✍ 3