Bahasa Python - Kamus Dictioanry

Dictionary atau Kamus itu seperti list, tetapi lebih umum. Dalam list, posisi indeks harus berupa bilangan bulat; dalam Dictionary, indeks bisa (hampir) jenis apa pun. Anda dapat menganggap Dictionary sebagai pemetaan antara satu set indeks (yang disebut key) dan satu set value. Setiap key memetakan ke value. Hubungan key dan value disebut key-value pair atau pasangan kunci-nilai atau kadang-kadang item. Sebagai contoh, kita akan membuat Dictionary yang memetakan dari bahasa Inggris ke bahasa Spanyol, jadi kunci dan nilainya adalah semua string.

Fungsi dict menciptakan kamus baru tanpa item. Karena dict adalah nama fungsi built-in, Anda harus menghindari menggunakannya sebagai nama variabel.

>>> eng2sp = dict()
>>> print(eng2sp)
{}

Tanda kurung kurawal, {}, mewakili kamus kosong. Untuk menambahkan item ke kamus, Anda dapat menggunakan tanda kurung siku:

>>> eng2sp['one'] = 'uno'

Lines ini menciptakan item yang memetakan dari key ‘one’ ke nilai “uno”. Jika kita mencetak kamus lagi, kita melihat key-value pair dengan titik dua antara key dan value:

>>> print(eng2sp)
{'one': 'uno'}

Format output ini juga merupakan format input. Misalnya, Anda dapat membuat kamus baru dengan tiga item. Tetapi jika Anda mencetak eng2sp, Anda mungkin terkejut:

>>> eng2sp = {'one': 'uno', 'two': 'dos', 'three': 'tres'}
>>> print(eng2sp)
{'one': 'uno', 'three': 'tres', 'two': 'dos'}

Urutan key-value pairs tidak sama. Bahkan, jika Anda mengetikkan contoh yang sama di komputer Anda, Anda mungkin mendapatkan hasil yang berbeda. Secara umum, urutan item dalam dictionary tidak dapat diprediksi. Tetapi itu bukan masalah karena elemen dictionary tidak pernah diindeks dengan indeks bilangan bulat. Sebaliknya, Anda menggunakan key untuk mencari value yang sesuai:

>>> print(eng2sp['two'])
'dos'

Key ‘two’ selalu memetakan ke value “dos” sehingga urutan item tidak menjadi masalah. Jika key tidak ada dalam dictionary, Anda mendapatkan pengecualian:

>>> print(eng2sp['four'])
KeyError: 'four'

Fungsi len bekerja pada dictionary dan mengembalikan jumlah key-value pairs:

>>> len(eng2sp)
3

Operator In bekerja pada dictionaty akan memberi tahu Anda apakah sesuatu tampak sebagai key dalam dictionary (muncul sebagai value tidak cukup baik).

>>> 'one' in eng2sp
True
>>> 'uno' in eng2sp
False

Untuk melihat apakah sesuatu muncul sebagai value dalam dictionary, Anda dapat menggunakan method values, yang mengembalikan value sebagai list, dan kemudian gunakan Operator In:

>>> vals = list(eng2sp.values())
>>> 'uno' in vals
True

Operator In menggunakan algoritma yang berbeda untuk list dan dictionary. Untuk list, menggunakan algoritma pencarian linear(linear search algorithm). Karena list semakin panjang, waktu pencarian menjadi lebih panjang sesuai dengan panjang list. Untuk dictionary, Python menggunakan algoritma yang disebut hash table yang memiliki properti luar biasa: operator in mengambil waktu yang sama tentang berapa pun banyaknya item yang ada dalam dictionary.

Dictionary juga bisa sebagai set counter. Misalkan Anda diberi string dan Anda ingin menghitung berapa kali setiap huruf muncul. Ada beberapa cara yang bisa Anda lakukan:

Anda dapat membuat 26 variabel, satu untuk setiap huruf alfabet. Kemudian Anda bisa traverse atau melintasi string dan, untuk setiap karakter, menambah counter yang sesuai, mungkin menggunakan kondisional berantai.

Anda bisa membuat list dengan 26 elemen. Kemudian Anda dapat mengonversi setiap karakter menjadi angka (menggunakan fungsi bawaan), gunakan angka sebagai indeks ke dalam list, dan tambahkan penghitung yang sesuai.

Anda dapat membuat dictionary dengan karakter sebagai key dan counter sebagai value yang sesuai. Saat pertama kali Anda melihat karakter, Anda akan menambahkan item ke dictionary. Setelah itu Anda akan menaikkan nilai barang yang ada.

Masing-masing opsi ini melakukan perhitungan yang sama, tetapi masing-masing mengimplementasikan perhitungan itu dengan cara yang berbeda. Implementasi atau implementation adalah cara melakukan perhitungan; beberapa implementasi lebih baik dari yang lain. Misalnya, keuntungan dari penerapan dictionary adalah bahwa kita tidak harus mengetahui sebelumnya huruf mana yang muncul dalam string dan kita hanya perlu memberi ruang untuk huruf-huruf yang muncul. Di sini terlihat seperti apa kode itu:

word = 'brontosaurus'
d = dict()
for c in word:
    if c not in d:
        d[c] = 1
        else:
            d[c] = d[c] + 1
print(d)

Kita secara efektif menghitung histogram, yang merupakan istilah statistik untuk satu set counter (atau frekuensi). Untuk loop melintasi string. Setiap kali melalui loop, jika karakter c tidak ada dalam dictionary, kita membuat item baru dengan key c dan value awal 1 (karena kita telah melihat huruf ini sekali). Jika c sudah ada di dictionary kita menaikkan d [c].

Berikut hasil dari program:

{'a': 1, 'b': 1, 'o': 2, 'n': 1, 's': 2, 'r': 2, 'u': 2, 't': 1}

Histogram menunjukkan bahwa huruf “a” dan “b” muncul satu kali; “O” muncul dua kali, dan seterusnya. Disctionary memiliki metode yang disebut ‘get’ yang mengambil key dan value default. Jika key muncul di dictionary, ‘get’ mengembalikan value yang sesuai; selain itu mengembalikan value default. Sebagai contoh:

>>> counts = { 'felisha' : 1 , 'hajar' : 42, 'jan': 100}
>>> print(counts.get('jan', 0))
100
>>> print(counts.get('tim', 0))
0

Kita bisa menggunakan get untuk menulis histogram kita lebih singkat. Karena metode get secara otomatis menangani kasus di mana key tidak ada dalam dictionary, kita dapat mengurangi empat baris ke satu dan menghilangkan pernyataan if.

word = 'brontosaurus'
d = dict()
for c in word:
    d[c] = d.get(c,0) + 1
print(d)

Penggunaan metode get untuk menyederhanakan penghitungan ini berakhir menjadi “idiom” yang sangat umum digunakan dalam Python dan kita enggunakannya berkali-kali pada materi python ini. Jadi Anda harus meluangkan waktu dan membandingkan loop menggunakan pernyataan if dan di operator dengan loop menggunakan metode get. Mereka melakukan hal yang persis sama, tetapi yang satu lebih ringkas

Looping dan dictionary juga penting anda ketahui pada python. Jika Anda menggunakan dictionary sebagai urutan dalam pernyataan, maka akan melintasi key pada dictionary. Loop ini mencetak setiap key dan value yang sesuai:

counts = { 'felisha' : 1 , 'hajar' : 42, 'jan': 100}
for key in counts:
    print(key, counts[key])

Inilah hasil yang terlihat:

felisha 1
hajar 42
jan 100

Sekali lagi, key tidak dalam urutan tertentu. Kita dapat menggunakan pola ini untuk mengimplementasikan berbagai idiom loop yang telah kita gambarkan sebelumnya. Sebagai contoh jika kita ingin menemukan semua entri dalam dictionary dengan value di atas sepuluh, kita bisa menulis kode berikut

counts = { 'felisha' : 1 , 'hajar' : 42, 'jan': 100}
for key in counts:
    if counts[key] > 10 :
        print(key, counts[key])

output:


hajar 42
jan 100

Untuk loop iterates melalui key pada dictionary, jadi kita harus menggunakan operator indeks untuk mengambil value yang sesuai untuk setiap key.

Kita hanya melihat entri dengan nilai di atas 10. Jika Anda ingin mencetak key dalam urutan abjad, Anda terlebih dahulu membuat list key dalam dictionary menggunakan key method yang tersedia dalam objek dictionary, dan kemudian mengurutkan list itu dan mengulang melalui list yang diurutkan, mencari setiap key dan mencetak key-value pairs dalam urutan terurut sebagai berikut:

ccounts = { 'felisha' : 1 , 'hajar' : 42, 'jan': 100}
lst = list(counts.keys())
print(lst)
lst.sort()
for key in lst:
    print(key, counts[key])

output:

['felisha', 'hajar', 'jan']
felisha 1
hajar 42
jan 100

Pertama Anda melihat list key dalam urutan yang tidak disortir yang kita dapatkan dari metode key. Kemudian kita melihat key-value pairs dalam urutan dari ‘for lop’.

Oke sepertinya sampai disini pembahasan kita tentang dictionary pada python. Hal ini juga penting untuk anda latih dan praktek ketika membuat kode pada python. Terima Kasih