Convert list untuk mengatur daftar tipe python yang tidak dapat di-hash

TypeError. tipe yang tidak bisa dihafal. 'daftar' biasanya berarti Anda mencoba menggunakan daftar sebagai argumen hash. Ini berarti bahwa ketika Anda mencoba untuk melakukan hash pada objek yang tidak dapat di-hash, itu akan menghasilkan kesalahan. Untuk mantan. ketika Anda menggunakan daftar sebagai kunci di kamus, ini tidak dapat dilakukan karena daftar tidak dapat di-hash. Cara standar untuk mengatasi masalah ini adalah dengan mentransmisikan daftar ke tuple

contoh

keluaran

Kesalahan ini menunjukkan bahwa kunci my_dict [1,2,3] adalah List dan List bukan tipe hashable di Python. Kunci kamus harus berupa tipe yang tidak dapat diubah dan daftar adalah tipe yang dapat diubah

Memperbaiki. Keluarkan daftar ke tuple

Anda harus mengubah daftar Anda menjadi tupel jika Anda ingin meletakkannya sebagai kunci di kamus Anda

keluaran

Hash[] adalah metode python bawaan, digunakan untuk mengembalikan nomor unik. Ini dapat diterapkan ke objek apa pun yang ditentukan pengguna yang tidak akan diubah setelah diinisialisasi. Properti ini digunakan terutama di kunci kamus

Contoh objek hashable

Contoh objek Unhashable

Tupel dan Daftar

Meskipun tupel mungkin tampak mirip dengan daftar, mereka sering digunakan dalam situasi yang berbeda dan untuk tujuan yang berbeda. Tuple tidak dapat diubah, dan biasanya berisi urutan elemen yang heterogen yang diakses melalui pembongkaran atau pengindeksan. Daftar bisa berubah, dan elemennya biasanya homogen dan diakses dengan mengulang daftar

Hashing

Hashing adalah sebuah konsep dalam ilmu komputer yang digunakan untuk membuat kinerja tinggi, struktur data akses acak semu di mana sejumlah besar data harus disimpan dan diakses dengan cepat. Objek yang tidak dapat diubah, atau objek yang tidak dapat diubah, dapat di-hash dan memiliki satu nilai unik yang tidak akan pernah berubah. Fungsi hashing adalah fungsi yang mengambil objek, katakanlah string seperti "Java" dan mengembalikan kode ukuran tetap, anggap nilai yang dikembalikan adalah bilangan bulat

TypeError. tipe yang tidak bisa dihafal. kesalahan 'daftar' terjadi saat Anda mencoba menambahkan daftar sebagai kunci dalam kamus atau sebagai item dalam Set python. Objek hashable digunakan sebagai kunci dalam kamus. Daftar ini adalah objek tipe yang tidak dapat di-hash yang Anda coba simpan. Jika objek tipe yang tidak dapat di-hash dicoba untuk di-hash, error TypeError. tipe yang tidak bisa dihafal. 'daftar' dilemparkan. Set dan kamus python menggunakan algoritma hash untuk membuat kunci hash yang digunakan untuk mendapatkan data dengan cepat

Daftar ini adalah objek yang dapat diubah yang dapat dimodifikasi kapan saja. Jika daftar diubah setelah kunci hash dihasilkan, maka algoritme hash tidak dapat mengenali daftar tersebut. Karenanya objek yang bisa berubah tidak bisa di-hash. Jika daftar dilewatkan sebagai argumen hash, maka itu akan membuang kesalahan TypeError. tipe yang tidak bisa dihafal. 'daftar'



Pengecualian

Ini akan menampilkan jejak tumpukan dari kesalahan seperti di bawah ini. TypeError. kesalahan jenis yang tidak dapat di-hash ditampilkan sebagai

Traceback [most recent call last]:
  File "/Users/python/Desktop/test.py", line 1, in 
    a = {1, [2,3] , 4}
TypeError: unhashable type: 'list'
[Finished in 0.1s with exit code 1]


Bagaimana mereproduksi masalah ini

Daftar python adalah objek yang tidak dapat di-hash. Dengan python, buat objek daftar. Tambahkan daftar ke objek set. Atau, tambahkan objek daftar sebagai kunci dalam kamus python. Karena objek yang tidak dapat di-hash tidak diizinkan dalam set atau kunci kamus, kesalahan akan terjadi

tes. py

a = {1, [2,3] , 4}
print a
_

Keluaran

Traceback [most recent call last]:
  File "/Users/python/Desktop/test.py", line 1, in 
    a = {1, [2,3] , 4}
TypeError: unhashable type: 'list'
[Finished in 0.1s with exit code 1]


Akar masalah

Set atau kamus menggunakan algoritma hashing untuk menyimpan dan mengambil elemen dalam struktur data. Set mempertahankan objek unik dengan kode hash. Kamus menyimpan kunci unik untuk menyimpan nilai. Daftar ini adalah objek yang tidak dapat diubah yang dapat dimodifikasi pada waktu tertentu. Kesalahan TypeError. tipe yang tidak bisa dihafal. 'daftar' adalah karena penambahan objek yang tidak dapat di-hash ke set atau kunci kamus



Solusi 1

Daftar objek yang tidak dapat di-hash dapat disimpan dalam kamus setelah daftar diubah menjadi tuple. Tuple adalah objek yang tidak dapat diubah yang dapat disimpan dalam kamus atau set. Fungsi tuple[] digunakan untuk mengonversi daftar menjadi tuple. Ini akan menyelesaikan kesalahan python “TypeError. tipe yang tidak bisa dihafal. 'daftar'"

tes. py

a = {1, tuple[[2,3]] , 4}
print a

Keluaran

set[[1, [2, 3], 4]]
[Finished in 0.1s]
_

Solusi 2

Error python “TypeError. jenis yang tidak dapat di-hash. 'set'” dilempar jika set ditambahkan sebagai kunci di kamus. Kumpulan bukanlah objek yang tidak dapat diubah. Jika objek yang ditetapkan akan dikonversi sebagai tupel sebelum ditambahkan ke kamus. Ini akan menyelesaikan masalah “TypeError. jenis yang tidak dapat di-hash. kesalahan 'setel'”. 

Contoh

a = {1:2, tuple[[2,3]]:3 , 4:4}
print a

Keluaran

{1: 2, [2, 3]: 3, 4: 4}
[Finished in 0.1s]
_

Solusi 3

Pilihan lain untuk menambahkan daftar dalam kamus adalah menyimpan sebagai nilai. Contoh di bawah mengilustrasikan cara menambahkan daftar ke dalam kamus sebagai nilai. Dalam kamus, objek yang dapat diubah dapat disimpan sebagai nilai

Bagaimana cara memperbaiki daftar jenis yang tidak dapat dihafal?

Kesalahan ini terjadi saat mencoba melakukan hash pada daftar, yang merupakan objek yang tidak dapat dihash. Misalnya, menggunakan daftar sebagai kunci dalam kamus Python akan menyebabkan kesalahan ini karena kamus hanya menerima tipe data hashable sebagai kunci. Cara standar untuk mengatasi masalah ini adalah dengan melemparkan daftar ke tuple, yang merupakan tipe data hashable .

Bagaimana Anda memperbaiki dict tipe TypeError Unhashable?

Sederhananya, kesalahan ini terjadi saat kode Anda mencoba mencirikan objek yang tidak dapat diubah seperti kamus. Solusi untuk masalah ini adalah mengonversi kamus menjadi sesuatu yang hashable .

Bagaimana Anda memperbaiki irisan tipe TypeError Unhashable?

"TypeError. tipe yang tidak bisa dihafal. 'slice'” muncul saat Anda mencoba mengakses item dari kamus menggunakan sintaks pengiris. Untuk mengatasi kesalahan ini, pastikan Anda merujuk ke item yang ingin Anda akses dari kamus secara langsung .

Mengapa daftar tidak dapat di-hash dan tuple dapat di-hash?

Karena daftar bisa berubah, sedangkan tuple tidak . Ketika Anda menyimpan nilai hash, misalnya, dict, jika objek berubah, nilai hash yang disimpan tidak akan diketahui, sehingga akan tetap sama.

Bài mới nhất

Chủ Đề