Hello
sobat Python Ketemu lagi dengan saya Admin Jawz
Kali
ini Kita akan membahas mengenai Dictionary Atau istilah lainnya Dictionary
dalam Python bersama dengan List, Dictionary adalah salah satu tipe data bawaan
paling fleksibel dengan Python. Jika Anda menganggap List sebagai kumpulan objek yang
diurutkan, Anda dapat menganggap Dictionary sebagai koleksi yang tidak
diurutkan; perbedaan utama adalah bahwa dalam Dictionary, item disimpan dan
diambil oleh kunci, bukan dengan posisi offset. Sementara List dapat melayani
peran yang mirip dengan array dalam bahasa lain, Dictionary menggantikan
catatan, tabel pencarian, dan jenis agregasi lain di mana nama item lebih
bermakna daripada posisi item. Misalnya, Dictionary dapat menggantikan banyak
algoritme pencarian dan struktur data yang mungkin harus Anda terapkan secara
manual dalam bahasa tingkat rendah — sebagai jenis bawaan yang sangat
dioptimalkan, mengindeks Dictionary adalah operasi pencarian yang sangat cepat.
Dictionary juga terkadang melakukan pekerjaan catatan, struct, dan tabel simbol
yang digunakan dalam bahasa lain; dapat digunakan untuk mewakili struktur data
yang jarang (kebanyakan kosong); dan banyak lagi. Berikut ini ikhtisar properti
utama mereka. Dictionary Python adalah:
Diakses
oleh kunci, tidak diimbangi posisi Dictionary kadang-kadang disebut hash array
arraysor (terutama oleh pengguna bahasa scripting lainnya). Mereka mengaitkan
seperangkat nilai dengan kunci, sehingga Anda dapat mengambil suatu item dari
Dictionary menggunakan kunci di bawah tempat Anda menyimpannya. Anda
menggunakan operasi pengindeksan yang sama untuk mendapatkan komponen dalam
Dictionary seperti yang Anda lakukan dalam daftar, tetapi indeks mengambil
bentuk kunci, bukan offset relatif
Koleksi objek acak yang tidak berurutan
Tidak seperti dalam daftar, item yang disimpan dalam kamus tidak disimpan dalam urutan tertentu; pada kenyataannya, Python pseudo-mengacak pesanan kiri-ke-kanan mereka untuk menyediakan pencarian cepat. Kunci menyediakan lokasi item simbolik (bukan fisik) dalam kamus.
Bervariasi-panjang, heterogen, dan
sewenang-wenang nestable
Seperti daftar, Dictionary dapat tumbuh dan menyusut di tempat (tanpa salinan baru dibuat), mereka dapat berisi objek dari jenis apa pun, dan mereka mendukung bersarang ke kedalaman apa pun (mereka dapat berisi daftar, Dictionary lain, dan sebagainya). Setiap keycan hanya memiliki satu nilai yang terkait, tetapi nilai itu bisa menjadi kumpulan dari beberapa objek jika diperlukan, dan nilai yang diberikan dapat disimpan di bawah sejumlah tombol.
Seperti daftar, Dictionary dapat tumbuh dan menyusut di tempat (tanpa salinan baru dibuat), mereka dapat berisi objek dari jenis apa pun, dan mereka mendukung bersarang ke kedalaman apa pun (mereka dapat berisi daftar, Dictionary lain, dan sebagainya). Setiap keycan hanya memiliki satu nilai yang terkait, tetapi nilai itu bisa menjadi kumpulan dari beberapa objek jika diperlukan, dan nilai yang diberikan dapat disimpan di bawah sejumlah tombol.
Dari kategori "pemetaan yang bisa
berubah"
Anda dapat mengubah Dictionary di tempat dengan menetapkan ke indeks (mereka bisa berubah), tetapi mereka tidak mendukung operasi urutan yang bekerja pada string dan daftar. Karena Dictionary adalah koleksi yang tidak berurutan, operasi yang bergantung pada urutan posisi tetap (misalnya, penggabungan, pemotongan) tidak masuk akal. Sebagai gantinya, Dictionary adalah satu-satunya perwakilan tipe inti yang ada di kategori pemetaan — objek yang memetakan kunci ke nilai. Pemetaan lain dalam Python dibuat oleh modul yang diimpor.
Anda dapat mengubah Dictionary di tempat dengan menetapkan ke indeks (mereka bisa berubah), tetapi mereka tidak mendukung operasi urutan yang bekerja pada string dan daftar. Karena Dictionary adalah koleksi yang tidak berurutan, operasi yang bergantung pada urutan posisi tetap (misalnya, penggabungan, pemotongan) tidak masuk akal. Sebagai gantinya, Dictionary adalah satu-satunya perwakilan tipe inti yang ada di kategori pemetaan — objek yang memetakan kunci ke nilai. Pemetaan lain dalam Python dibuat oleh modul yang diimpor.
Tabel referensi objek (tabel hash)
Jika daftar adalah array referensi objek yang mendukung akses berdasarkan posisi, Dictionary adalah tabel referensi objek tak berurutan yang mendukung akses oleh kunci. Secara internal, Dictionary diimplementasikan sebagai tabel hash (struktur data yang mendukung pengambilan yang sangat cepat), yang mulai kecil dan tumbuh sesuai permintaan. Selain itu, Python menggunakan algoritma hashing dioptimalkan untuk menemukan kunci, sehingga pengambilan cepat. Seperti daftar, referensi referensi situore referensi (bukan salinan, kecuali Anda menanyakannya secara eksplisit).
Jika daftar adalah array referensi objek yang mendukung akses berdasarkan posisi, Dictionary adalah tabel referensi objek tak berurutan yang mendukung akses oleh kunci. Secara internal, Dictionary diimplementasikan sebagai tabel hash (struktur data yang mendukung pengambilan yang sangat cepat), yang mulai kecil dan tumbuh sesuai permintaan. Selain itu, Python menggunakan algoritma hashing dioptimalkan untuk menemukan kunci, sehingga pengambilan cepat. Seperti daftar, referensi referensi situore referensi (bukan salinan, kecuali Anda menanyakannya secara eksplisit).
Basic Dictionary Operations
Dalam operasi normal, Anda membuat Dictionary
dengan literal dan menyimpan serta mengakses item berdasarkan kunci dengan
pengindeksan:
Di sini, Dictionary
ditugaskan ke variabel D; nilai kunci 'spam'adalah bilangan bulat 2, dan
seterusnya. Kami menggunakan sintaks braket persegi yang sama untuk mengindeks Dictionary
berdasarkan kunci seperti yang kami lakukan untuk mengindeks daftar dengan
offset, tetapi di sini ini berarti akses berdasarkan kunci, bukan berdasarkan
posisi.
operator keanggotaan memungkinkan Anda untuk menguji keberadaan kunci, dan metode kunci mengembalikan semua kunci dalam Dictionary. Yang terakhir ini dapat berguna untuk memproses Dictionary secara berurutan, tetapi Anda seharusnya tidak bergantung pada urutan daftar kunci. Karena hasil kunci dapat digunakan sebagai daftar normal, namun, selalu dapat diurutkan jika pesanan penting:
Amati ekspresi
kedua dalam daftar ini. Seperti yang disebutkan sebelumnya, tes inmembership
yang digunakan untuk string dan daftar juga berfungsi pada Dictionary —
memeriksa apakah kunci disimpan dalam Dictionary. Secara teknis, ini berfungsi
karena Dictionary mendefinisikan iterator yang melangkah melalui daftar kunci
mereka secara otomatis. Tipe lain menyediakan iterator yang mencerminkan
penggunaan umum mereka; file, misalnya, memiliki iterator yang membaca baris
demi baris.
Changing Dictionaries in Place
Mari lanjutkan
dengan sesi interaktif kami. Dictionary, seperti daftar, bisa berubah, jadi
Anda
dapat mengubah, memperluas, dan mengecilkan mereka di tempat tanpa membuat Dictionary baru: cukup tetapkan nilai ke kunci untuk mengubah atau membuat entri. Delstatement juga bekerja di sini; itu menghapus entri yang terkait dengan kunci yang ditentukan sebagai indeks. Perhatikan juga penumpukan daftar di dalam Dictionary dalam contoh ini (nilai kunci 'ham'). Semua jenis data koleksi dengan Python dapat bersarang di dalam satu sama lain secara sewenang-wenang:
dapat mengubah, memperluas, dan mengecilkan mereka di tempat tanpa membuat Dictionary baru: cukup tetapkan nilai ke kunci untuk mengubah atau membuat entri. Delstatement juga bekerja di sini; itu menghapus entri yang terkait dengan kunci yang ditentukan sebagai indeks. Perhatikan juga penumpukan daftar di dalam Dictionary dalam contoh ini (nilai kunci 'ham'). Semua jenis data koleksi dengan Python dapat bersarang di dalam satu sama lain secara sewenang-wenang:
mereka dalam daftar panggilan di sana untuk mengumpulkan nilai-nilai mereka sekaligus untuk ditampilkan:
Dalam program realistis yang mengumpulkan data
saat dijalankan, Anda sering tidak dapat memprediksi apa yang akan ada di Dictionary
sebelum program diluncurkan, apalagi ketika dikodekan. Mengambil kunci yang
tidak ada biasanya merupakan kesalahan, tetapi getmethod mengembalikan nilai
default — Tidak ada, atau default yang diteruskan — jika kunci tidak ada. Ini
adalah cara mudah untuk mengisi default untuk kunci yang tidak ada, dan
menghindari kesalahan kunci yang hilang ketika program Anda tidak dapat
mengantisipasi konten sebelumnya:
Metode pembaruan menyediakan sesuatu yang
mirip dengan rangkuman untuk Dictionary,
meskipun tidak ada hubungannya dengan pemesanan dari kiri ke kanan (sekali lagi, tidak ada yang namanya Dictionary). Ini menggabungkan kunci dan nilai dari satu Dictionary ke dalam nilai penimpaan tumpang tindih lain dari kunci yang sama jika ada bentrokan:
meskipun tidak ada hubungannya dengan pemesanan dari kiri ke kanan (sekali lagi, tidak ada yang namanya Dictionary). Ini menggabungkan kunci dan nilai dari satu Dictionary ke dalam nilai penimpaan tumpang tindih lain dari kunci yang sama jika ada bentrokan:
Perhatikan bagaimana campuran urutan kunci ada
di hasil terakhir; sekali lagi, begitulah cara kerja Dictionary. Akhirnya, Dictionary
popmethod menghapus kunci dari Dictionary dan mengembalikan nilai yang
dimilikinya. Mirip dengan daftar popmethod, tetapi ia mengambil kunci alih-alih
posisi opsional:
Catatan Penggunaan Dictionary
Dictionary adalah alat yang cukup sederhana
setelah Anda memahami mereka, tetapi berikut adalah beberapa petunjuk dan
pengingat tambahan yang harus Anda ketahui saat menggunakannya:
• Operasi urutan tidak berfungsi.
• Menugaskan ke indeks baru menambahkan entri.
• Kunci tidak harus selalu string.
• Operasi urutan tidak berfungsi.
• Menugaskan ke indeks baru menambahkan entri.
• Kunci tidak harus selalu string.
Poin terakhir dalam List sebelumnya cukup
penting untuk ditunjukkan dengan beberapa contoh. Ketika Anda menggunakan List,
itu ilegal untuk menetapkan ke offset yang ada di bagian akhir List:
Meskipun Anda dapat menggunakan pengulangan
untuk pra-alokasi sebagai List besar yang Anda perlukan (mis., [0] * 100), Anda
juga dapat melakukan sesuatu yang terlihat mirip dengan Dictionary yang tidak
memerlukan alokasi ruang tersebut. Dengan menggunakan kunci integer, Dictionary
dapat meniru List yang tampaknya tumbuh pada tugas offset:
Dengan cara yang sama, Keys Dictionary juga
umumnya dimanfaatkan untuk mengimplementasikan struktur data yang jarang —
misalnya, multidimensional array di mana hanya beberapa posisi yang memiliki
nilai yang disimpan di dalamnya:
Di sini, Kita telah menggunakan Dictionary
untuk mewakili array tiga dimensi yang kosong kecuali untuk dua posisi (2,3,4)
dan (7,8,9). Tombol-tombolnya adalah tuplesthat yang merekam koordinat slot
nonempty. Alih-alih mengalokasikan matriks tiga-dimensi yang besar dan
kebanyakan kosong untuk menyimpan nilai-nilai ini, kita dapat menggunakan Dictionary
dua-item yang sederhana. Dalam skema ini, mengakses slot kosong memicu
pengecualian Keys yang tidak ada, karena slot ini tidak disimpan secara fisik:
Menghindari missing-key errors
Kesalahan untuk pengambilan keys yang tidak
ada adalah umum dalam matriks yang jarang, tetapi Anda mungkin tidak ingin
mereka menutup program Anda. Setidaknya ada tiga cara untuk mengisi nilai
default daripada mendapatkan pesan kesalahan seperti itu — Anda dapat menguji keys
terlebih dahulu di ifstatements, gunakan trystatement untuk menangkap dan
memulihkan dari pengecualian secara eksplisit, atau cukup gunakan Dictionary
get method yang ditampilkan sebelumnya untuk menyediakan keys defaultfor yang
tidak ada...
Nesting dalam dictionaries
Seperti yang Anda lihat, dictionary dapat
memainkan banyak peran dalam Python. Secara umum, mereka dapat menggantikan
struktur data pencarian (karena pengindeksan oleh keys adalah operasi
pencarian) dan dapat mewakili banyak jenis informasi terstruktur. Misalnya, dictionary
adalah salah satu dari banyak cara untuk mendeskripsikan properti dari suatu item di
domain program Anda; artinya, mereka dapat melayani peran yang sama dengan
"catatan" atau "struct" dalam bahasa lain. Berikut ini,
misalnya, mengisi dictionary yang menggambarkan orang hipotetis, dengan
menetapkan keys baru dari waktu ke waktu (jika Anda seorang Tom, permintaan
maaf saya untuk memilih nama Anda di dalamArtikel ini mudah diketik!):
Khususnya jika tipe data bawaan Python yang disarangkan memungkinkan kita untuk dengan mudah merepresentasikan informasi terstruktur. Yang berikut lagi menggunakan Dictionary untuk menangkap properti objek, tetapi ia mengkode semuanya sekaligus (bukannya menugaskan ke setiap Keys secara terpisah) dan menyarangkan List dan Dictionary untuk mewakili nilai properti terstruktur:
Untuk mengambil komponen objek nesting, cukup string
bersama-sama operasi Index:
Perhatikan juga bahwa sementara kami fokus
pada satu "catatan" dengan data bersarang di sini, tidak ada alasan
kami tidak dapat menumpuk catatan itu sendiri dalam kumpulan data yang lebih
besar dan terlampir yang dikodekan sebagai list atau Dictionary, meskipun file
eksternal atau database formal Database sering memainkan peran wadah tingkat teratas dalam program yang realistis:
Akhirnya, perhatikan bahwa karena Dictionary
sangat berguna, lebih banyak cara untuk membangunnya telah muncul seiring
waktu. Dalam Python 2.3 dan yang lebih baru, misalnya, dua panggilan terakhir
ke konstruktor Dictionary (benar-benar, nama jenis) yang ditampilkan di sini
memiliki efek yang sama seperti bentuk literal dan keyassignment di atasnya:
Dictionary bukan hanya cara mudah untuk menyimpan
informasi dengan keys dalam program Anda beberapa ekstensi Python juga
menghadirkan antarmuka yang mirip dan berfungsi sama seperti Dictionary.
Misalnya, antarmuka Python ke file akses-demi-keys DBM sangat mirip dengan Dictionary
yang harus dibuka. Anda menyimpan dan mengambil string menggunakan indeks keys:
Anda akan melihat bahwa Anda dapat menyimpan seluruh objek Python dengan cara ini, juga, jika Anda mengganti dbmin kode sebelumnya dengan ambalan (rak adalah basis data akses-oleh-keys yang menyimpan objek Python persisten, bukan hanya string). Untuk pekerjaan Internet, dukungan skrip CGI Python juga menyajikan antarmuka seperti Dictionary. Panggilan ke cgi.FieldStorage menghasilkan objek mirip-Dictionary dengan satu entri per bidang masukan di laman web klien
Meskipun Dictionary adalah satu-satunya jenis pemetaan
inti, semua yang lain ini adalah contoh pemetaan, dan mendukung sebagian besar
operasi yang sama. Setelah Anda mempelajari antarmuka Dictionary, Anda akan
menemukan bahwa mereka berlaku untuk berbagai alat bawaan dengan Python. Untuk
kasus penggunaan Dictionary lain, JSON — format data bahasa-netral yang
digunakan untuk basis data dan transfer data. Dictionary Python, List, dan
kombinasi bersarang dari mereka hampir dapat lulus untuk catatan dalam format
ini sebagaimana adanya, dan dapat dengan mudah diterjemahkan ke dan dari string
teks JSON formal dengan modul perpustakaan jsonstandard Python.
Ok Sobat Python Sampai sini dulu kita bahas Dictionary Dalam Python
Sampai bertemu lagi di pembahsan berikutnya



















No comments:
Post a Comment