Tabel hash dan peta Hash dengan Python

Diterbitkan: 2022-11-06

Data 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

Daftar isi

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.