Python не позволяет использовать не-хэшируемые объекты в качестве ключей в других словарях. Как отметил Андрей Власовских, есть хороший обходной путь для частного случая использования не вложенных словарей в качестве ключей:
frozenset(a.items())#Can be put in the dictionary instead
Есть ли способ использования произвольных объектов в качестве ключей в словарях?
Пример:
Как это будет использоваться в качестве ключа?
{"a":1, "b":{"c":10}}
Очень редко вам придется использовать что-то вроде этого в вашем коде. Если вы считаете, что это так, сначала попробуйте изменить модель данных.
Точный пример использования
Вариант использования - это кеширование вызовов функции произвольного ключевого слова. Каждый ключ в словаре - это строка (имя аргумента), и объекты могут быть довольно сложными, состоящими из слоистых словарей, списков, кортежей, ect.
Связанные проблемы
Эта суб-проблема была отколота от проблемы здесь. Решения здесь касаются случая, когда словари не являются слоистыми.