Tabel hash dan peta Hash dengan Python
Diterbitkan: 2022-11-06Data membutuhkan banyak cara untuk diakses atau disimpan. Tabel Hash dan Hashmap merupakan struktur data terbaik untuk mengimplementasikannya dengan Python melalui tipe data bawaan yang dikenal sebagai kamus.
Hashmap atau tabel Hash dalam struktur data memetakan kunci ke pasangan nilainya dan menggunakan fungsi yang menghitung nilai indeks apa pun yang menahan elemen yang akan dimasukkan, dicari, atau dihapus. Ini membantu membuat akses data lebih mudah dan lebih cepat. Tabel hash umumnya menyimpan pasangan nilai kunci dan menggunakan fungsi hash untuk menghasilkan kunci.
Pada artikel ini, Anda akan mempelajari apa itu Tabel Hash dan Hashmaps dan bagaimana penerapannya dengan Python.
Pelajari ilmu data untuk mendapatkan keunggulan atas pesaing Anda
Apa itu tabel Hash atau Hashmap Python?
Tabel hash atau hashmap Python adalah struktur data yang diindeks. Ini menggunakan fungsi hash untuk menghitung indeks dengan menggunakan kunci ke dalam array slot atau ember. Anda dapat memetakan nilainya ke ember menggunakan indeks yang sesuai, dan kuncinya tidak dapat diubah dan unik.
Hashmaps mirip dengan lemari laci yang diberi label dengan barang-barang yang mereka simpan. Misalnya, hashmaps dapat menyimpan informasi pengguna seperti nama depan dan belakang, dll., di dalam ember.
Fungsi hash merupakan bagian integral dari implementasi hashmap. Ini menggunakan kunci dan menerjemahkannya ke indeks ember di daftar ember. Hashing yang ideal menghasilkan indeks terpisah untuk setiap kunci. Namun, perlu diingat bahwa tabrakan dapat terjadi. Saat hashing menghasilkan indeks yang sudah ada, ember untuk beberapa nilai dapat dengan mudah digunakan dengan mengulangi atau menambahkan daftar. Dalam Python, contoh peta hash adalah kamus.
Mari kita lihat implementasi hashmap secara mendetail untuk mempelajari cara menyesuaikan dan membangun struktur data untuk pengoptimalan pencarian.
Hashmap dengan Python
Hashmap mencakup fungsi-fungsi berikut:
- set_val(key, value): Fungsi ini digunakan untuk memasukkan pasangan kunci-nilai ke dalam peta hash. Jika sudah ada nilai yang ada di peta hash, Anda harus memperbarui nilainya.
- get_val(key): Fungsi ini mengembalikan nilai ke kunci tertentu yang dipetakan atau “Tidak ada catatan yang ditemukan” jika peta ini tidak memiliki pemetaan untuk kunci tersebut.
- delete_val(key): Menghapus pemetaan untuk kunci tertentu jika hashmap memiliki pemetaan untuk kunci tersebut.
Penerapan:-
kelas Hashtable:
# Buat daftar ember kosong dengan ukuran tertentu
def __init__(sendiri, ukuran):
self.size = ukuran
self.hash_table = self.create_buckets()
def create_buckets(mandiri):
kembalikan [[] untuk _ dalam rentang(ukuran sendiri)]
# Masukkan nilai ke dalam peta hash
def set_val(diri, kunci, val):
# Dapatkan indeks dari kunci
# menggunakan fungsi hash
hashed_key = hash(kunci) % self.size
# Dapatkan ember yang sesuai dengan indeks
ember = self.hash_table[hashed_key]
found_key = Salah
untuk indeks, catat dalam enumerate(bucket):
record_key, record_val = catatan
# periksa apakah ember memiliki kunci yang sama dengan
# kunci yang akan dimasukkan
jika record_key == kunci:
found_key = Benar
merusak
# Jika ember memiliki kunci yang sama dengan kunci yang akan dimasukkan,
# Perbarui nilai kunci
# Jika tidak, tambahkan pasangan nilai kunci baru ke ember
jika ditemukan_key:
ember[indeks] = (kunci, val)
kalau tidak:
bucket.append((kunci, val))
# Kembalikan nilai yang dicari dengan kunci tertentu
def get_val(diri, kunci):
# Dapatkan indeks dari kunci menggunakan
# fungsi hash
hashed_key = hash(kunci) % self.size
# Dapatkan ember yang sesuai dengan indeks
ember = self.hash_table[hashed_key]
found_key = Salah
untuk indeks, catat dalam enumerate(bucket):
record_key, record_val = catatan
# periksa apakah ember memiliki kunci yang sama dengan
# kunci sedang dicari
jika record_key == kunci:
found_key = Benar
merusak
# Jika ember memiliki kunci yang sama dengan kunci yang dicari,
# Kembalikan nilai yang ditemukan
# Jika tidak, tunjukkan tidak ada catatan yang ditemukan
jika ditemukan_key:
kembali record_val
kalau tidak:
kembali "Tidak ada catatan yang ditemukan"
# Hapus nilai dengan kunci tertentu
def delete_val(sendiri, kunci):
# Dapatkan indeks dari kunci menggunakan
# fungsi hash
hashed_key = hash(kunci) % self.size
# Dapatkan ember yang sesuai dengan indeks
ember = self.hash_table[hashed_key]
found_key = Salah
untuk indeks, catat dalam enumerate(bucket):
record_key, record_val = catatan
# periksa apakah ember memiliki kunci yang sama dengan
# kunci yang akan dihapus
jika record_key == kunci:
found_key = Benar
merusak
jika ditemukan_key:
ember.pop(indeks)
kembali
# Untuk mencetak item peta hash
def __str__(sendiri):
return “”.join(str(item) untuk item di self.hash_table)
hash_table = HashTable(50)
# masukkan beberapa nilai
hash_table.set_val([email protected]', 'beberapa nilai')
cetak (tabel_hash)
mencetak()
hash_table.set_val('[email protected]', 'beberapa nilai lain')
cetak (tabel_hash)
mencetak()
# cari/akses catatan dengan kunci
print(hash_table.get_val('[email protected]'))
mencetak()
# hapus atau hapus nilai
hash_table.delete_val('[email protected]')
cetak (tabel_hash)
Keluaran:-
[][][][][][][][][][][][][][][][][][][][][][][] ([email protected]', 'beberapa nilai') ][][][][][][][][][][][][][][][][][][][][][][][] [][][][]
[][][][][][][][][][][][][][][][][][][][][][][] ([email protected]', 'beberapa nilai') ][][][][][][('[email protected]', 'beberapa nilai lain')][][][][][][][][][] ][][][][][][][][][][][][][]
Beberapa nilai lainnya
[][][][][][][][][][][][][][][][][][][][][][][] ([email protected]', 'beberapa nilai') ][][][][][][][][][][][][][][][][][][][][][][][] [][][][]
Periksa AS - Program Ilmu Data kami
Program Sertifikat Profesional dalam Ilmu Data dan Analisis Bisnis | Master of Science dalam Ilmu Data | Master of Science dalam Ilmu Data | Program Sertifikat Lanjutan dalam Ilmu Data |
Program PG Eksekutif dalam Ilmu Data | Bootcamp Pemrograman Python | Program Sertifikat Profesional dalam Ilmu Data untuk Pengambilan Keputusan Bisnis | Program Lanjutan dalam Ilmu Data |
Melakukan Operasi pada tabel Hash menggunakan Kamus:
Ada banyak operasi yang dapat dilakukan dengan Python pada tabel hash melalui kamus. Mereka adalah sebagai berikut:-
- Mengakses Nilai
- Memperbarui Nilai
- Menghapus Elemen
Mengakses Nilai:
Anda dapat dengan mudah mengakses nilai kamus dengan cara berikut: -
- Menggunakan nilai kunci
- Menggunakan fungsi
- Menerapkan for loop
Menggunakan nilai kunci:
Anda dapat mengakses nilai kamus menggunakan nilai kunci seperti di bawah ini: -
my_dict={'Elsa' : '001' , 'Anna': '002' , 'Olaf': '003'} my_dict['Anna'] |
Keluaran: '002′
Menggunakan fungsi:
Ada banyak fungsi bawaan seperti get(), keys(), values(), dll.
my_dict={'Elsa' : '001' , 'Anna': '002' , 'Olaf': '003'} cetak(my_dict.keys()) cetak(my_dict.values()) print(my_dict.get('Elsa')) |
Keluaran:-
dict_keys(['Elsa', 'Anna', 'Olaf'])
dict_values(['001', '002', '003'])
001
Menerapkan for loop:
Loop memberi Anda akses ke pasangan kunci-nilai kamus dengan mengulanginya. Sebagai contoh:
my_dict={'Elsa' : '001' , 'Anna': '002' , 'Olaf': '003'} print("Semua kunci") untuk x di my_dict: print(x) #mencetak kunci print("Semua nilai") untuk x di my_dict.values(): print(x) #mencetak nilai print("Semua kunci dan nilai") untuk x,y di my_dict.items(): print(x, “:” , y) #mencetak kunci dan nilai |
Keluaran:
Semua kunci
Elsa
Anna
Olaf
Semua nilai
001
002
003
Semua kunci dan nilai
Elsa: 001
Anna : 002
Olaf: 003
Memperbarui Nilai:
Kamus adalah tipe data yang dapat diubah yang dapat diperbarui bila diperlukan. Anda dapat melakukan sebagai berikut: -
my_dict={'Elsa' : '001' , 'Anna': '002' , 'Olaf': '003'} my_dict['Olaf'] = '004' #Memperbarui nilai Dave my_dict['Kristoff'] = '005' #menambahkan pasangan nilai kunci cetak(my_dict) |
Keluaran : {'Elsa': '001' , 'Anna': '002' , 'Olaf': '004', 'Kristoff': '005'}
Menghapus item dari kamus:
Anda dapat menghapus item dari kamus dengan fungsi seperti del(), pop(), popitem(), clear(), dll. Misalnya:
my_dict={'Elsa' : '001' , 'Anna': '002' , 'Olaf': '003'} del my_dict['Elsa'] #menghapus pasangan nilai kunci 'Elsa' my_dict.pop('Anna') #menghapus nilai 'Anna' my_dict.popitem() #menghapus item yang terakhir dimasukkan cetak(my_dict) |
Keluaran : {'Olaf': '003'}
Kesimpulan
Kita dapat dengan mudah menyimpulkan bahwa hashmap dan tabel hash Python merupakan bagian integral untuk akses yang lebih mudah dan lebih cepat ke data yang relevan. Ini adalah alat yang berharga bagi para profesional ilmu data seperti ilmuwan data dan analis data. Jika Anda tertarik untuk mempelajari lebih lanjut tentang bidang Ilmu Data, upGrad memiliki Program Sertifikat Profesional terbaik dalam Ilmu Data untuk Pengambilan Keputusan Bisnis .
Apa itu hashmap, Python, dan tabel hash, Python?
Hashtable membantu dalam menyimpan pasangan nilai kunci di mana kunci dihasilkan menggunakan fungsi hash. Hashmaps atau implementasi hashtable dengan Python dilakukan dengan kamus bawaan.
Apa perbedaan antara hashmap dan tabel hash Python?
Hashmap tidak disinkronkan, tetapi Hashtable disinkronkan. Ini berarti, bahwa tabel Hash adalah thread-safe dan dapat dibagikan di antara banyak utas, tetapi HashMap membutuhkan sinkronisasi yang tepat sebelum dibagikan.
Apakah peta merupakan Hashtable?
Tabel hash Python juga disebut peta hash, adalah kunci pemetaan struktur data ke nilai. Ini menggunakan teknik hashing.