Sobes.tech
Back to questions
Middle
2

Классический вопрос: что произойдёт, если положить в словарь ключи 1 (int), 1.0 (float) и True (bool)?

Companies where asked
it spirit

Answer from AI

sobes.tech AI

В Python ключи словаря должны быть хешируемыми и сравниваться по значению. Интересный момент: 1 (int), 1.0 (float) и True (bool) считаются равными при сравнении ключей, потому что:

  • 1 == 1.0 возвращает True
  • 1 == True возвращает True

Кроме того, у них одинаковый хеш (hash(1) == hash(1.0) == hash(True)).

Поэтому при добавлении этих ключей в словарь:

d = {}
d[1] = 'int'
d[1.0] = 'float'
d[True] = 'bool'
print(d)

в словаре останется только один ключ (фактически 1), и значение будет перезаписываться последним добавленным — 'bool'. В итоге словарь будет выглядеть так:

{1: 'bool'}

То есть ключи 1, 1.0 и True считаются одним и тем же ключом в словаре.