Нет, вы не можете. Попробуйте это:
{ i:i for i in range(0, 100, 10) }
Причина, по которой это работает для смежных целых чисел, начинающихся с нуля, состоит в том, что каждое целое число хэширует себя (hash(i) == i
), а словари имеют размеры своих внутренних таблиц, чтобы они были как минимум такими же большими, как у элементов, которые они содержат (они используют стратегию зондирования, что требует этого). Следовательно, целое число i
заканчивается в слоте i
без коллизий. Вы также обнаружите, что смежные целые числа, начинающиеся с некоторого другого числа, также имеют тенденцию к монотонному увеличению, но они могут обернуться где-то посередине:
>>> { i:'' for i in range(25, 35) }
{32: '', 33: '', 34: '', 25: '', 26: '', 27: '', 28: '', 29: '', 30: '', 31: ''}
Важно отметить, что это всего лишь наблюдения за фактическим поведением. Ничто в языке не гарантирует этого, поэтому вы не можете на это полагаться.