Tuesday, August 7, 2018

Dictionary dalam Python


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.

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.
 
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).



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.

Fungsi-fungsi yang terintegrasi bekerja pada Dictionary juga; ia mengembalikan jumlah item yang disimpan dalam Dictionary atau, dengan kata lain, panjang daftar kuncinya. Dictionary di
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:

  Adapun kunci, dua metode ini juga mengembalikan objek iterable di 3.X, jadi bungkus
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:




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.
 

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