Lewati ke konten utama

Panduan Hashmap di Python

Ketahui apa itu hashmap dan bagaimana implementasinya di Python melalui dictionary.
Diperbarui 4 Jun 2026  · 11 mnt baca

Ketika para praktisi data membahas penyimpanan data saat ini, sebagian besar waktu mereka merujuk pada di mana data disimpan, apakah pada berkas lokal, basis data SQL atau NoSQL, atau di cloud. Namun, aspek penting lain terkait penyimpanan data adalah bagaimana data disimpan.

Bagaimana penyimpanan data sering berlangsung pada level yang lebih rendah, di inti bahasa pemrograman. Hal ini berkaitan dengan desain alat yang kita gunakan, bukan cara menggunakan alat tersebut. Meski begitu, mengetahui cara data disimpan sangat penting untuk memahami mekanisme dasar yang memungkinkan pekerjaan berjalan. Selain itu, pengetahuan ini dapat membantu kita mengambil keputusan yang lebih baik untuk meningkatkan kinerja komputasi.

Jika Anda benar-benar tertarik pada hashmap, serta linked list, stack, queue, dan graph, daftar di DataCamp agar Anda dapat mengikuti kursus Data Structures and Algorithms in Python kami.

Apa itu Hashmap?

Untuk mendefinisikan hashmap, kita terlebih dahulu perlu memahami apa itu hashing. Hashing adalah proses mengubah key apa pun atau rangkaian karakter menjadi nilai lain. Hasilnya biasanya berupa nilai yang lebih pendek dan berdimensi tetap, sehingga secara komputasional lebih mudah digunakan dibandingkan key asli.

Hashmap, juga dikenal sebagai hashtable, merupakan salah satu implementasi hashing yang paling umum. Hashmap menyimpan pasangan key-value (misalnya, ID karyawan dan nama karyawan) dalam sebuah daftar yang dapat diakses melalui indeksnya. Dapat dikatakan bahwa hashmap adalah struktur data yang memanfaatkan teknik hashing untuk menyimpan data secara asosiatif. Ini adalah struktur data yang dioptimalkan sehingga memungkinkan operasi data yang lebih cepat, termasuk penyisipan, penghapusan, dan pencarian.

Gagasan di balik hashmap adalah mendistribusikan entri (pasangan key/value) ke seluruh array bucket. Diberikan sebuah key, fungsi hashing akan menghitung indeks yang khas yang menunjukkan di mana entri tersebut dapat ditemukan. Penggunaan indeks alih-alih key asli membuat hashmap sangat cocok untuk berbagai operasi data, termasuk penyisipan, penghapusan, dan pencarian data.

Cara kerja hashmap Python

Cara kerja hashmap. Gambar oleh Penulis

Untuk menghitung nilai hash, atau cukup disebut hash, fungsi hash menghasilkan nilai baru sesuai dengan algoritma hashing matematis. Karena pasangan key-value secara teori tidak terbatas, fungsi hashing akan memetakan key berdasarkan ukuran tabel yang diberikan.

Ada banyak fungsi hash yang tersedia, masing-masing dengan kelebihan dan kekurangannya. Tujuan utama fungsi hash adalah selalu mengembalikan nilai yang sama untuk input yang sama.

Yang paling umum antara lain sebagai berikut:

  • Metode Pembagian (Division): Ini adalah cara paling sederhana dan tercepat untuk menghitung nilai hash. Caranya dengan membagi key dengan ukuran tabel dan menggunakan sisa bagi sebagai hash.
  • Metode Mid Square: Mengkuadratkan key yang diberikan, kemudian mengambil digit tengahnya dan menggunakan digit tersebut sebagai indeks elemen.
  • Metode Perkalian (Multiplication): Menetapkan indeks hash dari bagian pecahan hasil perkalian key dengan bilangan riil besar.
  • Metode Folding: Key terlebih dahulu dibagi menjadi potongan berukuran sama, hasilnya dijumlahkan dan dibagi dengan ukuran tabel. Hash adalah sisa baginya.

Hashmap di Python

Python mengimplementasikan hashmap melalui tipe data bawaan dictionary. Seperti hashmap, dictionary menyimpan data dalam pasangan {key:value}. Setelah Anda membuat dictionary (lihat bagian berikut), Python akan menerapkan fungsi hash yang sesuai di balik layar untuk menghitung hash dari setiap key.

Dictionary Python memiliki fitur-fitur berikut:

  • Dictionary bersifat mutable: Artinya kita dapat mengubah, menambah, atau menghapus item setelah dictionary dibuat.
  • Elemennya berurutan: Pada Python 3.6 dan sebelumnya, dictionary tidak berurutan, artinya item tidak memiliki urutan yang pasti. Namun, sejak rilis Python 3.7, dictionary mempertahankan urutan. Kini, saat Anda membuat dictionary Python, key akan mengikuti urutan seperti yang tercantum dalam kode sumber. Untuk mengetahui alasan di balik perubahan ini, baca catatan dari Raymond Hettinger, salah satu pengembang inti Python.
  • Key bersifat immutable: Artinya key selalu merupakan tipe data yang tidak dapat diubah. Dengan kata lain, dictionary hanya akan mengizinkan tipe data yang dapat di-hash, seperti string, angka, dan tuple. Sebaliknya, key tidak boleh berupa tipe data mutable, seperti list.
  • Key bersifat unik: Key bersifat unik dalam sebuah dictionary dan tidak dapat diduplikasi. Jika digunakan lebih dari sekali, entri berikutnya akan menimpa nilai sebelumnya.

Jadi, jika Anda pernah bertanya-tanya tentang perbedaan antara hashmap vs dictionary, jawabannya sederhana. Dictionary hanyalah implementasi asli hashmap di Python. Sementara hashmap adalah struktur data yang dapat dibuat menggunakan berbagai teknik hashing, dictionary adalah hashmap khusus berbasis Python, yang desain dan perilakunya ditentukan dalam kelas dict milik Python.

Banyak bahasa pemrograman modern, seperti Python, Java, dan C++, mendukung hashmap. Di Python, hashmap diimplementasikan melalui dictionary, sebuah struktur data yang banyak digunakan dan kemungkinan besar sudah Anda kenal. Pada bagian berikut, kita akan membahas dasar-dasar dictionary, cara kerjanya, dan cara mengimplementasikannya menggunakan berbagai paket Python.

Cara Menggunakan Dictionary di Python

Mari kita lihat beberapa operasi dictionary yang paling umum. Untuk mengetahui lebih lanjut cara menggunakan dictionary, lihat Tutorial Dictionary Python kami.

Membuat dictionary

Membuat dictionary di Python cukup sederhana. Anda hanya perlu menggunakan kurung kurawal dan memasukkan pasangan key-value yang dipisahkan dengan koma. Alternatifnya, Anda dapat menggunakan fungsi bawaan dict(). Mari kita buat dictionary yang memetakan ibu kota ke negara:

# Create dictionary
dictionary_capitals = {'Madrid': 'Spain', 'Lisboa': 'Portugal', 'London': 'United Kingdom'}

# Print the content of the dictionary
print(dictionary_capitals)

# Expected output:
# {'Madrid': 'Spain', 'Lisboa': 'Portugal', 'London': 'United Kingdom'}

Penting untuk diingat bahwa sebuah key harus unik dalam dictionary; tidak boleh ada duplikasi. Namun, jika terjadi duplikasi key, alih-alih menghasilkan error, Python akan menganggap kemunculan key terakhir sebagai yang valid dan mengabaikan pasangan key-value pertama. Coba lihat sendiri:

dictionary_capitals = {'Madrid': 'China', 'Lisboa': 'Portugal', 
                       'London': 'United Kingdom','Madrid':'Spain'}

print(dictionary_capitals)

# Expected output:
# {'Madrid': 'Spain', 'Lisboa': 'Portugal', 'London': 'United Kingdom'}

Mencari di dalam dictionary

Untuk mencari informasi di dictionary kita, kita perlu menentukan key di dalam tanda kurung siku, dan Python akan mengembalikan nilai yang terkait, seperti berikut:

# Search for data
print(dictionary_capitals['Madrid'])

# Expected output: Spain

Jika Anda mencoba mengakses key yang tidak ada dalam dictionary, Python akan memunculkan error. Untuk mencegah hal ini, Anda dapat mengakses key menggunakan metode .get(). Jika key tidak ada, metode ini hanya akan mengembalikan nilai None:

print(dictionary_capitals.get('Prague'))

# Expected output: None

Menambahkan dan menghapus nilai dalam dictionary

Mari tambahkan pasangan ibu kota-negara baru:

# Create a new key-value pair
dictionary_capitals['Berlin'] = 'Italy'

print(dictionary_capitals)

# Expected output:
# {'Madrid': 'Spain', 'Lisboa': 'Portugal', 'London': 'United Kingdom', 'Berlin': 'Italy'}

Sintaks yang sama dapat digunakan untuk memperbarui nilai yang terkait dengan sebuah key. Mari perbaiki nilai untuk Berlin:

# Update the value of a key
dictionary_capitals['Berlin'] = 'Germany'

print(dictionary_capitals)

# Expected output:
# {'Madrid': 'Spain', 'Lisboa': 'Portugal', 'London': 'United Kingdom', 'Berlin': 'Germany'}

Sekarang mari kita hapus salah satu pasangan dalam dictionary kita

# Delete key-value pair
del dictionary_capitals['Lisboa']

print(dictionary_capitals)

# Expected output:
# {'Madrid': 'Spain', 'London': 'United Kingdom', 'Berlin': 'Germany'}

Atau, jika Anda ingin menghapus semua pasangan key-value dalam dictionary, Anda dapat menggunakan metode .clear():

dictionary_capitals.clear()

print(dictionary_capitals)

# Expected output: {}

Melakukan loop pada dictionary

Jika Anda ingin mengambil semua pasangan key-value, gunakan metode .items(), dan Python akan mengembalikan daftar iterable berupa tuple:

dictionary_capitals = {'Madrid': 'Spain', 'Lisboa': 'Portugal', 
                      'London': 'United Kingdom', 'Berlin': 'Germany'}

print(dictionary_capitals.items())

# Expected output:
# dict_items([('Madrid', 'Spain'), ('Lisboa', 'Portugal'), 
# ('London', 'United Kingdom'), ('Berlin', 'Germany')])
# Iterate over key-value pairs
for key, value in dictionary_capitals.items():
    print('the capital of {} is {}'.format(value, key))

# Expected output:
# the capital of Spain is Madrid
# the capital of Portugal is Lisboa
# the capital of United Kingdom is London
# the capital of Germany is Berlin

Demikian pula, jika Anda ingin mengambil daftar iterable berisi key dan value, Anda dapat menggunakan metode .keys() dan .values():

print(dictionary_capitals.keys())

# Expected output:
# dict_keys(['Madrid', 'Lisboa', 'London', 'Berlin'])
for key in dictionary_capitals.keys():
    print(key.upper())

# Expected output:
# MADRID
# LISBOA
# LONDON
# BERLIN
print(dictionary_capitals.values())

# Expected output:
# dict_values(['Spain', 'Portugal', 'United Kingdom', 'Germany'])
for value in dictionary_capitals.values():
    print(value.upper())

# Expected output:
# SPAIN
# PORTUGAL
# UNITED KINGDOM
# GERMANY

Aplikasi Hashmap di Dunia Nyata

Hashmap adalah struktur data yang kuat dan digunakan hampir di mana-mana dalam dunia digital. Di bawah ini Anda dapat menemukan daftar aplikasi dunia nyata dari hashmap:

  • Pengindeksan basis data: Hashmap sering digunakan untuk pengindeksan dan pencarian data dalam volume besar. Peramban web umum menggunakan hashmap untuk menyimpan halaman web yang diindeks.
  • Manajemen cache: Sistem operasi modern menggunakan hashmap untuk mengatur memori cache agar memungkinkan akses cepat ke informasi yang sering digunakan.
  • Kriptografi: Hashmap memainkan peran penting dalam bidang kriptografi. Algoritma kriptografis memanfaatkan hashmap untuk memastikan integritas data, validasi data, dan transaksi aman di seluruh jaringan.
  • Blockchain: Hashmap berada di inti blockchain. Setiap kali terjadi transaksi di jaringan, data transaksi tersebut diambil sebagai input ke fungsi hash, yang kemudian menghasilkan output unik. Setiap blok dalam blockchain membawa hash dari blok sebelumnya, membentuk rantai blok.

Praktik Terbaik dan Kesalahan Umum pada Hashmap

Hashmap adalah struktur data yang sangat serbaguna dan efisien. Namun, mereka juga memiliki masalah dan keterbatasan. Untuk mengatasi tantangan umum yang terkait dengan hashmap, penting untuk mengingat beberapa pertimbangan dan praktik yang baik.

Key harus immutable

Ini masuk akal: jika isi key berubah, fungsi hash akan mengembalikan hash yang berbeda, sehingga Python tidak akan dapat menemukan nilai yang terkait dengan key tersebut.

Menangani collision pada hashmap

Hashing hanya bekerja jika setiap item dipetakan ke lokasi unik di tabel hash. Namun terkadang, fungsi hash dapat mengembalikan output yang sama untuk input yang berbeda. Misalnya, jika Anda menggunakan fungsi hash pembagian, bilangan bulat yang berbeda mungkin memiliki fungsi hash yang sama (menghasilkan sisa yang sama saat menerapkan operasi modulo), sehingga menimbulkan masalah yang disebut collision. Collision harus diselesaikan, dan ada beberapa teknik yang tersedia. Untungnya, dalam kasus dictionary, Python menangani potensi collision di balik layar.

Memahami load factor

Load factor didefinisikan sebagai rasio jumlah elemen dalam tabel terhadap jumlah total bucket. Ini adalah ukuran untuk memperkirakan seberapa baik data terdistribusi. Secara umum, semakin merata data terdistribusi, semakin kecil kemungkinan terjadinya collision. Sekali lagi, dalam kasus dictionary, Python secara otomatis menyesuaikan ukuran tabel ketika ada penyisipan atau penghapusan pasangan key-value baru.

Perhatikan kinerja

Fungsi hash yang baik akan meminimalkan jumlah collision, mudah dihitung, dan mendistribusikan item secara merata di tabel hash. Ini dapat dilakukan dengan meningkatkan ukuran tabel atau kompleksitas fungsi hash. Meskipun praktis untuk jumlah item yang kecil, hal ini tidak layak ketika jumlah item yang mungkin sangat besar, karena akan menghasilkan hashmap yang boros memori dan kurang efisien.

Apakah dictionary yang Anda butuhkan?

Dictionary memang hebat, tetapi struktur data lain mungkin lebih cocok untuk data dan kebutuhan spesifik Anda. Pada akhirnya, dictionary tidak mendukung operasi umum seperti indexing, slicing, dan concatenation, sehingga membuatnya kurang fleksibel dan lebih sulit digunakan dalam skenario tertentu.

Implementasi Hashmap Python Alternatif

Seperti telah disebutkan, Python mengimplementasikan hashmap melalui dictionary bawaan. Namun, penting untuk dicatat bahwa ada alat Python native lainnya, serta pustaka pihak ketiga, untuk memanfaatkan kekuatan hashmap.

Mari kita lihat beberapa contoh paling populernya.

Defaultdict

Setiap kali Anda mencoba mengakses key yang tidak ada dalam dictionary, Python akan mengembalikan KeyError. Salah satu cara mencegah hal ini adalah dengan mencari informasi menggunakan metode .get(). Namun, cara yang lebih dioptimalkan adalah menggunakan Defaultdict, yang tersedia di modul collections. Defaultdict dan dictionary hampir sama. Satu-satunya perbedaannya adalah Defaultdict tidak pernah memunculkan error karena menyediakan nilai default untuk key yang tidak ada.

from collections import defaultdict 

# Defining the dict 
capitals = defaultdict(lambda: "The key doesn't exist") 
capitals['Madrid'] = 'Spain'
capitals['Lisboa'] = 'Portugal'
  
print(capitals['Madrid']) 
print(capitals['Lisboa']) 
print(capitals['Ankara']) 

# Expected output:
# Spain
# Portugal
# The key doesn't exist

Counter

Counter adalah subclass dari dictionary Python yang dirancang khusus untuk menghitung objek yang dapat di-hash. Ini adalah dictionary di mana elemen disimpan sebagai key dan hitungannya disimpan sebagai value.

Ada beberapa cara untuk menginisialisasi Counter:

  • Dengan urutan item.

  • Dengan key dan hitungan dalam dictionary.

  • Menggunakan pemetaan name:value.

from collections import Counter 

# a new counter from an iterable
c1 = Counter(['aaa','bbb','aaa','ccc','ccc','aaa'])
# a new counter from a mapping
c2 = Counter({'red': 4, 'blue': 2})     
# a new counter from keyword args
c3 = Counter(cats=4, dogs=8)       
# print results
print(c1)
print(c2)
print(c3)

# Expected output:
# Counter({'aaa': 3, 'ccc': 2, 'bbb': 1})
# Counter({'red': 4, 'blue': 2})
# Counter({'dogs': 8, 'cats': 4})

Kelas Counter hadir dengan serangkaian metode praktis untuk melakukan perhitungan umum.

print('keys of the counter: ', c3.keys())
print('values of the counter: ',c3.values()) 
print('list with all elements: ', list(c3.elements())) 
print('number of elements: ', c3.total()) # number elements
print('2 most common occurrences: ', c3.most_common(2)) # 2 most common occurrences 

# Expected output:
# keys of the counter:  dict_keys(['cats', 'dogs'])
# values of the counter:  dict_values([4, 8])
# list with all elements:  ['cats', 'cats', 'cats', 'cats', 'dogs', 'dogs', 'dogs', 'dogs', 'dogs', 'dogs', 'dogs', 'dogs']
# number of elements:  12
# 2 most common occurrences:  [('dogs', 8), ('cats', 4)]

Metode hashing di Scikit-learn

Scikit-learn, juga dikenal sebagai sklearn, adalah pustaka machine learning Python yang tangguh dan bersumber terbuka. Pustaka ini dibuat untuk membantu menyederhanakan proses penerapan model machine learning dan statistik di Python.

Sklearn hadir dengan berbagai metode hashing yang bisa sangat berguna untuk proses rekayasa fitur.

Salah satu yang paling umum adalah metode CountVectorizer. Metode ini digunakan untuk mengubah teks tertentu menjadi vektor berdasarkan frekuensi setiap kata yang muncul dalam keseluruhan teks. CountVectorizer sangat membantu dalam konteks analisis teks.

from sklearn.feature_extraction.text import CountVectorizer
import pandas as pd
 
documents = ["Welcome to this new DataCamp Python course",
            "Welcome to this new DataCamp R skill track",
            "Welcome to this new DataCamp Data Analyst career track"]
 
# Create a Vectorizer Object
vectorizer = CountVectorizer()

X = vectorizer.fit_transform(documents)

# print unique values 
print('unique words: ', vectorizer.get_feature_names_out())

# print sparse matrix with word frequency
pd.DataFrame(X.toarray(), columns = vectorizer.get_feature_names_out())

# Expected output:
# unique words:  ['analyst' 'career' 'course' 'data' 'datacamp' 'new' 'python' 'skill'
# 'this' 'to' 'track' 'welcome']

Output dari metode CountVectorizer Python

Ada metode hashing lain di sklearn, termasuk FeatureHasher dan DictVectorizer. Studi kasus School Budgeting with Machine Learning in Python kami adalah contoh yang sangat baik untuk mempelajari cara kerjanya dalam praktik.

Kesimpulan

Selamat telah menyelesaikan tutorial tentang hashmap ini. Kami harap Anda sekarang memiliki pemahaman yang lebih baik tentang hashmap dan dictionary Python. Jika Anda ingin mempelajari lebih lanjut tentang dictionary dan cara menggunakannya dalam skenario nyata, kami sangat menyarankan Anda membaca Tutorial Dictionary Python khusus kami, serta Tutorial Python Dictionary Comprehension.

Terakhir, jika Anda baru memulai belajar Python dan ingin mempelajari lebih jauh, ikuti kursus Introduction to Data Science in Python dari DataCamp dan lihat Python Tutorial for Beginners kami.


Javier Canales Luna's photo
Author
Javier Canales Luna
LinkedIn

Saya adalah analis data lepas yang berkolaborasi dengan perusahaan dan organisasi di seluruh dunia dalam proyek ilmu data. Saya juga instruktur ilmu data dengan pengalaman lebih dari 2 tahun. Saya rutin menulis artikel terkait ilmu data dalam bahasa Inggris dan Spanyol, beberapa di antaranya telah diterbitkan di situs tepercaya seperti DataCamp, Towards Data Science, dan Analytics Vidhya. Sebagai ilmuwan data dengan latar belakang ilmu politik dan hukum, tujuan saya adalah bekerja pada irisan kebijakan publik, hukum, dan teknologi, memanfaatkan kekuatan gagasan untuk mendorong solusi serta narasi inovatif yang dapat membantu kita menghadapi tantangan mendesak, khususnya krisis iklim. Saya menganggap diri saya seorang autodidak, pembelajar sepanjang hayat, dan pendukung kuat pendekatan multidisipliner. Tidak pernah ada kata terlambat untuk mempelajari hal baru.

Topik

Mulai Perjalanan Python Anda Hari Ini!

Program

Pengembang Python

28 Hr
Dari pengujian kode dan penerapan kontrol versi hingga pengambilan data web dan pengembangan paket, ambil langkah selanjutnya dalam perjalanan Anda sebagai pengembang Python!
Lihat DetailRight Arrow
Mulai Kursus
Lihat Lebih BanyakRight Arrow
Terkait

blogs

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

blogs

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

blogs

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

Lihat Lebih BanyakLihat Lebih Banyak