Rumah > Artikel > pembangunan bahagian belakang > Cara Menggunakan Kamus sebagai Kunci dalam Python: Menyelesaikan Ralat \'TypeError: unhashable: \'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!