首頁  >  文章  >  後端開發  >  為什麼我在 Python 中收到 \"TypeError: unhashable type: \'dict\'\" 以及如何修復它?

為什麼我在 Python 中收到 \"TypeError: unhashable type: \'dict\'\" 以及如何修復它?

Linda Hamilton
Linda Hamilton原創
2024-10-28 05:41:01222瀏覽

Why am I getting a

TypeError: unhashable type: 'dict'

當您嘗試使用字典作為字典或字典中的鍵時,會發生此錯誤一套。 Python 由不可變物件(例如字串、整數、浮點數、凍結集和不可變元組)組成,它們是可散列的並且可以用作鍵。但是,字典是可變的,因此不可哈希。

要使用字典作為鍵,必須將其轉換為可雜湊格式。如果字典僅包含不可變值,您可以使用freezeset() 建立它的可雜湊表示:

<code class="python">dict_key = {"a": "b"}
key = frozenset(dict_key.items())</code>

現在您可以使用key 作為字典或集合中的鍵:

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

如果字典包含的值本身就是字典或列表,則需要遞歸地將它們轉換為可哈希格式。這是一個可以提供幫助的實用函數:

<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>

透過使用此函數,您可以凍結字典,然後將其用作鍵:

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

以上是為什麼我在 Python 中收到 \"TypeError: unhashable type: \'dict\'\" 以及如何修復它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn