Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara Menggunakan Kamus sebagai Kunci dalam Python: Menyelesaikan Ralat \"TypeError: unhashable: \'dict\'\"

Cara Menggunakan Kamus sebagai Kunci dalam Python: Menyelesaikan Ralat \"TypeError: unhashable: \'dict\'\"

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-27 02:25:30354semak imbas

How to Use Dictionaries as Keys in Python: Resolving the

TypeError: unhashable type: 'dict'

Apabila berhadapan dengan mesej ralat "TypeError: unhashable type: 'dict'," ini menunjukkan bahawa anda sedang mencuba untuk menggunakan kamus sebagai kunci dalam kamus lain atau dalam satu set. Ini tidak dibenarkan kerana kunci mesti mempunyai kebolehcapaian, yang biasanya hanya disokong oleh objek tidak boleh ubah (rentetan, nombor, tuple unsur tidak boleh ubah, set beku, dll.).

Untuk menggunakan kamus sebagai kunci, anda perlu mengubahnya menjadi perwakilan boleh cincang. Jika kamus hanya mengandungi nilai tidak boleh ubah semata-mata, anda boleh mencapai ini dengan membekukannya menjadi struktur data tidak berubah:

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

Kini, anda boleh menggunakan 'kunci' sebagai kunci dalam kamus atau set lain:

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

Perlu diingat bahawa anda perlu menggunakan perwakilan beku secara konsisten pada bila-bila masa anda mahu mengakses data menggunakan kamus:

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

Dalam kes di mana nilai kamus itu sendiri adalah kamus atau senarai, anda perlu menggunakan pembekuan rekursif untuk memastikan 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>

Dengan memanfaatkan fungsi ini, anda boleh membekukan kamus anda dan menggunakannya sebagai kunci dalam struktur boleh cincang:

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

Atas ialah kandungan terperinci Cara Menggunakan Kamus sebagai Kunci dalam Python: Menyelesaikan Ralat \"TypeError: unhashable: \'dict\'\". Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn