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

Mary-Kate Olsen
Lepaskan: 2024-10-27 02:25:30
asal
406 orang telah melayarinya

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>
Salin selepas log masuk

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

<code class="python">some_dict[key] = True</code>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan