Home  >  Article  >  Backend Development  >  How to Use Dictionaries as Keys in Python: Resolving the \"TypeError: unhashable type: \'dict\'\" Error

How to Use Dictionaries as Keys in Python: Resolving the \"TypeError: unhashable type: \'dict\'\" Error

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-27 02:25:30354browse

How to Use Dictionaries as Keys in Python: Resolving the

TypeError: unhashable type: 'dict'

When faced with the error message "TypeError: unhashable type: 'dict'," it indicates that you're attempting to use a dictionary as a key within another dictionary or in a set. This is not permitted because keys must possess hashability, which is generally only supported by immutable objects (strings, numbers, tuples of immutable elements, frozen sets, etc.).

To utilize a dictionary as a key, you need to transform it into a hashable representation. If the dictionary solely contains immutable values, you can achieve this by freezing it into an immutable data structure:

<code class="python">key = frozenset(dict_key.items())</code>

Now, you can employ 'key' as a key in other dictionaries or sets:

<code class="python">some_dict[key] = True</code>

Keep in mind that you need to consistently use the frozen representation whenever you want to access data using the dictionary:

<code class="python">some_dict[dict_key]  # This will raise an error
some_dict[frozenset(dict_key.items())]  # This works</code>

In cases where the dictionary's values are themselves dictionaries or lists, you will need to employ recursive freezing to ensure hashability:

<code class="python">def freeze(d):
    if isinstance(d, dict):
        return frozenset((key, freeze(value)) for key, value in d.items())
    elif isinstance(d, list):
        return tuple(freeze(value) for value in d)
    return d</code>

By leveraging this function, you can freeze your dictionary and use it as a key in hashable structures:

<code class="python">frozen_dict = freeze(dict_key)
some_dict[frozen_dict] = True</code>

The above is the detailed content of How to Use Dictionaries as Keys in Python: Resolving the \"TypeError: unhashable type: \'dict\'\" Error. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn