Python'da Hash tabloları ve Hash haritaları

Yayınlanan: 2022-11-06

Verilere erişilmesi veya saklanması için birden fazla yol gerekir. Hash Tables ve Hashmaps, bunu Python'da sözlük olarak bilinen yerleşik veri türü aracılığıyla uygulamak için en iyi veri yapılarıdır.

Veri yapısındaki bir Hashmap veya Hash tablosu, anahtarları değer çiftleriyle eşler ve eklenecek, aranacak veya kaldırılacak öğeleri tutan herhangi bir dizin değerini hesaplayan bir işlev kullanır. Bu, verilere erişimin daha kolay ve hızlı olmasına yardımcı olur. Karma tabloları genellikle anahtar/değer çiftlerini depolar ve bir anahtar oluşturmak için karma işlevini kullanır.

Bu yazıda, Hash Tables ve Hashmap'lerin ne olduğunu ve Python'da nasıl uygulandığını öğreneceksiniz.

Rakiplerinize üstünlük sağlamak için veri bilimini öğrenin

İçindekiler

Hash tablosu veya Hashmap Python nedir?

Bir hash tablosu veya hashmap Python, indekslenmiş bir veri yapısıdır. Bir dizi yuva veya kovaya bir anahtar kullanarak bir dizini hesaplamak için karma işlevlerini kullanır. Karşılık gelen dizini kullanarak değerini bir kovaya eşleyebilirsiniz ve anahtar değişmez ve benzersizdir.

Hashmap'ler, depoladıkları şeylerle etiketlenmiş bir çekmeceli dolaplara benzer. Örneğin, hashmapler, ad ve soyadı gibi kullanıcı bilgilerini kovada saklayabilir.

Hash fonksiyonu, bir hashmap uygulamasının ayrılmaz bir parçasıdır. Anahtarı kullanır ve onu kova listesindeki kova dizinine çevirir. İdeal karma, her anahtar için ayrı bir dizin üretir. Ancak, çarpışmaların meydana gelebileceğini unutmayın. Karma işlemi zaten var olan bir dizin oluşturduğunda, bir listeyi yeniden düzenleyerek veya ekleyerek birden çok değer için bir kova kolayca kullanılabilir. Python'da karma haritalara bir örnek sözlüklerdir.

Arama optimizasyonu için veri yapılarının nasıl özelleştirileceğini ve oluşturulacağını öğrenmek için hashmap uygulamasını ayrıntılı olarak inceleyelim.

Python'da Hashmap

Hashmap aşağıdaki işlevleri içerir:

  • set_val(anahtar, değer): Bu fonksiyon, hash haritasına bir anahtar-değer çifti eklemek için kullanılır. Karma haritasında zaten mevcut bir değer varsa, değeri güncellemelisiniz.
  • get_val(key): Bu işlev, değeri eşlenen belirtilen anahtara döndürür veya bu eşlemede anahtar için eşleme yoksa “Kayıt bulunamadı”.
  • delete_val(key): Hashmap'te anahtar için eşleme varsa, belirli anahtar için eşlemeyi siler.

Uygulama:-

sınıf Hashtable:

# Verilen boyutta boş kova listesi oluşturun

def __init__(kendi, boyut):

self.size = boyut

self.hash_table = self.create_buckets()

def create_buckets(self):

aralıktaki _ için [[] döndür(self.size)]

# Hash haritasına değerler ekleyin

def set_val(self, key, val):

# Anahtardan dizini alın

# karma işlevini kullanma

hashed_key = hash(anahtar) % self.size

# Dizine karşılık gelen kovayı alın

kova = self.hash_table[hashed_key]

Found_key = Yanlış

dizin için, numaralandırmaya (kova) kaydedin:

record_key, record_val = kayıt

# kova ile aynı anahtara sahip olup olmadığını kontrol edin

# eklenecek anahtar

eğer record_key == anahtar:

Found_key = Doğru

kırmak

# Kova, takılacak anahtarla aynı anahtara sahipse,

# Anahtar değerini güncelle

# Aksi takdirde, yeni anahtar/değer çiftini pakete ekleyin

eğer bulundu_anahtar:

kova[indeks] = (anahtar, değer)

başka:

kova.append((anahtar, val))

# Belirli bir anahtarla aranan değeri döndür

def get_val(self, key):

# kullanarak anahtardan dizini alın

# Özet fonksiyonu

hashed_key = hash(anahtar) % self.size

# Dizine karşılık gelen kovayı alın

kova = self.hash_table[hashed_key]

Found_key = Yanlış

dizin için, numaralandırmaya (kova) kaydedin:

record_key, record_val = kayıt

# kova ile aynı anahtara sahip olup olmadığını kontrol edin

# aranan anahtar

eğer record_key == anahtar:

Found_key = Doğru

kırmak

# Kova, aranan anahtarla aynı anahtara sahipse,

# Bulunan değeri döndür

# Aksi takdirde kayıt bulunamadığını belirtin

eğer bulundu_anahtar:

record_val döndür

başka:

dönüş "Kayıt bulunamadı"

# Belirli bir anahtarla bir değeri kaldırın

def delete_val(self, key):

# kullanarak anahtardan dizini alın

# Özet fonksiyonu

hashed_key = hash(anahtar) % self.size

# Dizine karşılık gelen kovayı alın

kova = self.hash_table[hashed_key]

Found_key = Yanlış

dizin için, numaralandırmaya (kova) kaydedin:

record_key, record_val = kayıt

# kova ile aynı anahtara sahip olup olmadığını kontrol edin

# silinecek anahtar

eğer record_key == anahtar:

Found_key = Doğru

kırmak

eğer bulundu_anahtar:

kova.pop(dizin)

dönüş

# Hash haritasının öğelerini yazdırmak için

tanım __str__(kendi):

self.hash_table'daki öğe için “”.join(str(item) döndür)

hash_table = HashTable(50)

# bazı değerler girin

hash_table.set_val([email protected]', 'bir değer')

yazdır(hash_table)

Yazdır()

hash_table.set_val('[email protected]', 'başka bir değer')

yazdır(hash_table)

Yazdır()

# anahtarla bir kayıt arama/erişim

print(hash_table.get_val('[email protected]'))

Yazdır()

# bir değeri sil veya kaldır

hash_table.delete_val('[email protected]')

yazdır(hash_table)

Çıktı:-

[][][][][][][][][][][][][][][][][][][][][][] ([email protected]', 'bir değer') ][][][][][][][][][][][][][][][][][][][][][][][] [][][][]

[][][][][][][][][][][][][][][][][][][][][][] ([email protected]', 'bir değer') ][][][][][][('[email protected]', 'başka bir değer')][][][][][][][][][ ][][][][][][][][][][][][][]

Başka bir değer

[][][][][][][][][][][][][][][][][][][][][][] ([email protected]', 'bir değer') ][][][][][][][][][][][][][][][][][][][][][][][] [][][][]

ABD - Veri Bilimi Programlarımıza göz atın

Veri Bilimi ve İş Analitiğinde Profesyonel Sertifika Programı Veri Biliminde Bilim Ustası Veri Biliminde Bilim Ustası Veri Biliminde İleri Düzey Sertifika Programı
Veri Biliminde Yönetici PG Programı Python Programlama Eğitim Kampı İş Karar Verme için Veri Biliminde Profesyonel Sertifika Programı Veri Biliminde İleri Program

Sözlükleri Kullanarak Hash tablolarında İşlemler Gerçekleştirme:

Python'da sözlükler aracılığıyla hash tablolarında yapılabilecek çok sayıda işlem vardır. Bunlar aşağıdaki gibidir: -

  • Değerlere Erişim
  • Değerler Güncelleniyor
  • Öğe Siliniyor

Değerlere Erişim:

Bir sözlüğün değerlerine aşağıdaki yollarla kolayca erişebilirsiniz: -

  • Anahtar değerleri kullanma
  • İşlevleri kullanma
  • for döngüsünün uygulanması

Anahtar değerleri kullanma:

Aşağıdaki gibi anahtar değerleri kullanarak sözlük değerlerine erişebilirsiniz: -

my_dict={'Elsa' : '001' , 'Anna': '002' , 'Olaf': '003'}

my_dict['Anna']

Çıktı: '002'

İşlevleri kullanma:

get(), key(), values(), vb. gibi çok sayıda yerleşik işlev vardır.

my_dict={'Elsa' : '001' , 'Anna': '002' , 'Olaf': '003'}

print(my_dict.keys())

print(my_dict.values())

print(my_dict.get('Elsa'))

Çıktı:-

dict_keys(['Elsa', 'Anna', 'Olaf'])

dict_values(['001', '002', '003'])

001

for döngüsünün uygulanması:

Döngü, bir sözlüğün anahtar/değer çiftlerini yineleyerek bunlara erişmenizi sağlar. Örneğin:

my_dict={'Elsa' : '001' , 'Anna': '002' , 'Olaf': '003'}

print(“Tüm tuşlar”)

my_dict içindeki x için:

print(x) #tuşları yazdırır

print(“Tüm değerler”)

my_dict.values() içindeki x için:

print(x) #prints değerleri

print(“Tüm anahtarlar ve değerler”)

my_dict.items() içindeki x,y için:

print(x, “:” , y) #baskı tuşları ve değerleri

Çıktı:

Tüm tuşlar

Elsa

Anna

olaf

Tüm değerler

001

002

003

Tüm anahtarlar ve değerler

Elsa: 001

Anna : 002

Olaf: 003

Değerler Güncelleniyor:

Sözlükler, gerektiğinde güncellenebilen değiştirilebilir veri türleridir. Aşağıdaki gibi yapabilirsiniz: -

my_dict={'Elsa' : '001' , 'Anna': '002' , 'Olaf': '003'}

my_dict['Olaf'] = '004' #Dave değeri güncelleniyor

my_dict['Kristoff'] = '005' #anahtar/değer çifti ekleme

yazdır(my_dict)

Çıktı : {'Elsa': '001', 'Anna': '002', 'Olaf': '004', 'Kristoff': '005'}

Bir sözlükten öğeleri silmek:

del(), pop(), popitem(), clear(), vb. gibi işlevlerle bir sözlükten öğeleri silebilirsiniz . Örneğin:

my_dict={'Elsa' : '001' , 'Anna': '002' , 'Olaf': '003'}

del my_dict['Elsa'] #'Elsa' anahtar/değer çiftini kaldırır

my_dict.pop('Anna') #'Anna'nın değerini kaldırır

my_dict.popitem() #son eklenen öğeyi kaldırır

yazdır(my_dict)

Çıktı : {'Olaf': '003'}

Çözüm

İlgili verilere daha kolay ve daha hızlı erişim için hashmap'lerin ve karma tablo Python'un ayrılmaz olduğu sonucuna kolayca varabiliriz. Veri bilimcileri ve veri analistleri gibi veri bilimi uzmanları için değerli bir araçtır. Veri Bilimi alanı hakkında daha fazla bilgi edinmek istiyorsanız, upGrad İş Karar Verme için Veri Biliminde en iyi Profesyonel Sertifika Programına sahiptir .

Hashmap, Python ve hash tablosu Python nedir?

Bir hashtable, bir hash işlevi kullanılarak bir anahtarın oluşturulduğu anahtar-değer çiftlerinin saklanmasına yardımcı olur. Python'daki hashmap'ler veya hashtable uygulamaları yerleşik sözlüklerle yapılır.

Bir hashmap ve bir karma tablo Python arasındaki fark nedir?

Bir Hashmap senkronize edilmez, ancak bir Hashtable senkronize edilir. Bu, Hash tablolarının iş parçacığı için güvenli olduğu ve çok sayıda iş parçacığı arasında paylaşılabileceği anlamına gelir, ancak HashMap'in paylaşılmadan önce uygun senkronizasyona ihtiyacı vardır.

Harita bir Hashtable midir?

Bir karma tablosu Python, aynı zamanda bir karma haritası olarak da adlandırılır, anahtarları değerlere eşleyen bir veri yapısıdır. Hash tekniğini kullanır.