× Главная Лучшее Свежее Вход Регистрация
ДуровЛох стал главным конкурентом ВКонтакте (Дуров в шоке) https://durovloh.me.
Читайте также:
5

Самые дешевые цены на тату! Качественные материалы...

Самые дешевые цены на тату!
Качественные материалы для вашей кожи)
Берусь за самые сложные работы.
Занимаюсь подбором эскизов.
Создаю эскизы по вашему по желанию.
Работы выполняются на высоком уровне. Татуировки Свердловск-Луганск 0721232587 -Виктор
Татуировки Свердловск-Луганск

Самые дешевые цены на тату! Качественные материалы...
Самые дешевые цены на тату! Качественные материалы... Самые дешевые цены на тату! Качественные материалы... Самые дешевые цены на тату! Качественные материалы...
7

? Нестандартная ситуация со словарями Мы знаем, что...

? Нестандартная ситуация со словарями

Мы знаем, что вы - любите Python, а еще больше любите необычные фишки. Но знали ли вы, что при работе со словарями могут возникать довольно не интуитивные ситуации?

❓ Посмотрите, чему будет равен my_dict?

» my_dict = {
1.0: 'One (float)',
1: 'One (int)',
True: 'One (bool)',
'1': 'One (string)'
}

# {1.0: 'One (bool)', '1': 'One (string)'}

Несмотря на добавление 4 отдельных ключей в словарь, можете ли вы объяснить, почему он оставляет только два из них?

✅ Мы знаем, что ключи должны быть уникальными и неизменяемыми. В данном случае нет никаких сомнений в том, что 1.0, 1 и True имеют разные типы данных.

» type(1.0), type(1), type(True)

# (float, int, bool)

Если посмотреть на их id, убедимся что и они различны:

» id(1.0), id(1), id(True)

# (139644507527152, 139645051222320, 9758592)

❌ Но дело не только в этом! Ключи должны быть еще хешируемы. Для поиска ключа, Python использует именно его хэш-значение, а не id. Значит посмотрим на их хэш-значения:

» hash(1.0), hash(1), hash(True)

# (1, 1, 1)

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

? Но обратите еще внимание на итоговые ключ и значение: ключ - 1.0, в то время как значение соответствует ключу True.

❓Как так получилось?

Дело в том, что сначала 1.0 добавляется в качестве ключа, а значение устанавливается 'One (float)'. Затем, добавляя ключ 1, python распознает его как эквивалентное хэш-значение. И значение, соответствующее 1.0, перезаписывается на 'One (int)', в то время как ключ (1.0) сохраняется как есть.

Наконец, при добавлении True снова получаем эквивалентность хэша с существующим ключом 1.0. И снова, значение, которое изначально было 'One (float)' и обновлено до 'One (int)' на предыдущем шаге, перезаписывается на 'One (bool)'.

❓А почему сохранен строковый ключ '1'?

Тут все просто: он имеет уникальное хеш-значение, отличное от других ключей.

? Надеемся, что этот пост дал вам чуть более полное понимание работы словарей. Приходите к IT Resume на Симулятор "Аналитик данных", где мы с нуля обучаем SQL и Python и делимся полезными фишками!

#python@pylounge

? Нестандартная ситуация со словарями Мы знаем, что...
? Нестандартная ситуация со словарями Мы знаем, что... ? Нестандартная ситуация со словарями Мы знаем, что... ? Нестандартная ситуация со словарями Мы знаем, что... ? Нестандартная ситуация со словарями Мы знаем, что...
Еще посты

Свежие комментарии

Ozod Azik 1 месяцев к записи
Я только одного вижу, а где другие?
Наталия 1 месяцев к записи
Ищем, все переживаем, как с вами связаться??
Валерия 1 месяцев к записи
Ну как по мне ей и так и так идёт, правда больше мне с андеркатом нравится😉
Вера 1 месяцев к записи
У меня есть олень
Анжелика 2 месяцев назад к записи
При чем тут хейт ,очень хорошие внимательные врачи. Я как раз закрывала больничный, парень с бородой был на приёме ( уж простите не поняла кто тут кто😭). Очень вежливый, внимательный, по русски говорит. Понравился . А передо мой вышла бабулька с глазами по пятаку , подсела к нам и начала названивать, вот мол ,не наш доктор ,а какой толковый ,все послушал и рассказал. Думаю ,эти парни станут всеоющими любимцами ,если останутся внимательным, гуманными и человечными. А то русские врачи больно быстро начинают мнить из себя пуп земли. Удачи, ребята !