Что выведет этот код?


d = {[1, 2]: "value"}

Код вызовет ошибку `TypeError: unhashable type: 'list'`. Ключами в словаре `dict` должны быть hashable типы, такие как числа, строки, кортежи, а списки (`list`) не hashable, так как они изменяемые.

В Python представленный код вызовет ошибку TypeError: unhashable type: 'list'.

Причина: Ключи словаря (dict) в Python должны быть hashable. Это означает, что они должны быть неизменяемыми (immutable) и иметь hash-значение, которое не меняется в течение их жизни. Списки (list) являются изменяемыми (mutable), то есть их можно изменять после создания, поэтому они не могут быть использованы в качестве ключей словаря.

Решение: Если требуется использовать упорядоченную последовательность чисел в качестве ключа, можно использовать кортеж (tuple). Кортежи являются неизменяемыми.

Пример исправленного кода:


d = {(1, 2): "value"}
print(d) # Вывод: {(1, 2): 'value'}
  

Альтернативные решения:

  • Если важна только возможность отличать один список от другого, и нет необходимости в прямом использовании в качестве ключа словаря, можно использовать строковое представление списка:
  • 
    d = {str([1, 2]): "value"}
    print(d) # Вывод: {'[1, 2]': 'value'}
          
  • В более сложных случаях, когда необходимо использовать сложную структуру данных в качестве ключа, можно рассмотреть возможность использования hash-функции для генерации уникального hash-значения на основе этой структуры данных. Однако, это требует careful consideration, чтобы избежать коллизий.
0