Middle
30
Классикалық сұрақ: егер сіз сөздікке 1 (int), 1.0 (float) және True (bool) кілттерін салсаңыз, не болады?
Сұралған компаниялар
it spirit
AI-дан жауап
sobes.tech AI
В Python ключи словаря должны быть хешируемыми и сравниваться по значению. Интересный момент: 1 (int), 1.0 (float) и True (bool) считаются равными при сравнении ключей, потому что:
1 == 1.0возвращаетTrue1 == 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 считаются одним и тем же ключом в словаре.