Bagaimana Anda memecahkan kamus bersarang di python?

Panduan ini mengajarkan Anda cara mengakses kamus bersarang dengan Python. Selain itu, Anda belajar cara membuat kamus bersarang, mengakses elemen, dan memodifikasinya. Saya telah menyertakan banyak contoh berguna dan berbagai skenario yang mungkin Anda perlukan untuk melakukan ini

Apa itu Kamus dengan Python?

Dan jika Anda baru mengenal kamus, kamus adalah kumpulan item berlabel yang tidak diurutkan

student = {'name' : 'Alice', 'age': '23'}

Kamus “satu dimensi” tradisional memiliki pasangan kunci-nilai seperti yang disorot di atas. Kuncinya adalah label dari nilai yang dirujuknya

Misalnya, Anda bisa mendapatkan nama dan usia siswa di kamus di atas dengan mengaksesnya menggunakan tombol

name = student["name"]
age = student["age"]
_

Oke, itu hanya ringkasan singkat tentang cara kerja kamus Python dan cara mengakses nilainya

Apa itu Kamus Bersarang?

Kata "bersarang" mengacu pada objek serupa yang ditempatkan di dalam satu sama lain. Kamus bersarang dengan Python berarti menempatkan kamus di dalam kamus

Misalnya, berikut adalah kamus siswa bertingkat yang terdiri dari data dari beberapa siswa yang dikaitkan dengan ID siswa tiga digit

students = {
    123: {'name' : 'Alice', 'age': '23'},
    321: {'name' : 'Bob', 'age': '34'}
}

Disini siswa adalah kamus kamus dimana ID siswa adalah kunci dan kamus data siswa adalah nilai

Bagaimana Cara Mengakses Elemen Kamus Bersarang?

Untuk mengakses nilai kamus bersarang di Python, Anda harus melakukannya

  1. Akses kamus di dalam kamus dengan kuncinya
  2. Akses nilai kamus yang diakses dengan kunci terkait

Mari kita lihat cara mengakses nilai kamus siswa bersarang dari bagian sebelumnya

students = {
    123: {'name' : 'Alice', 'age': '23'},
    321: {'name' : 'Bob', 'age': '34'}
}

Untuk memilih siswa dari kamus siswa, seseorang perlu mengetahui ID siswa dari siswa tersebut

Mari kita asumsikan saya adalah Alice yang mencoba mengakses data siswa saya dari database siswa. Saya tahu bahwa ID siswa saya adalah 123. Jadi, saya bisa mengakses kamus dengan nilai itu

alice = students[123]
print(alice)
_

Keluaran

{'name': 'Alice', 'age': '23'}

Ini berhasil menampilkan data kamus yang terkait dengan Alice

Untuk mengakses nilai tertentu dalam data, panggil lagi operator pengakses kamus pada kamus data yang diakses

Misalnya, saya hanya ingin memeriksa nama siswa dengan ID 123

name = students[123]['name']
print(name)
_

Keluaran

Alice

Seperti yang Anda lihat, pada kode di atas, pertama-tama saya mengakses data kamus yang terkait dengan ID 123. Karena nilai ini juga merupakan kamus, saya dapat terus mengakses nilainya dengan cara yang sama

Tentu saja, Anda dapat membagi prosesnya sedemikian rupa

  1. Akses kamus dalam dan simpan dalam variabel
  2. Akses nilai variabel kamus dalam dan simpan di variabel lain

Contohnya

Alice
0

Keluaran

Alice

Akses Kamus Bersarang Lebih Aman

Sejauh ini Anda telah melihat cara mengakses nilai kamus tanpa memikirkan apa yang terjadi jika kunci tidak ada

Mari lanjutkan eksplorasi dengan kamus siswa

students = {
    123: {'name' : 'Alice', 'age': '23'},
    321: {'name' : 'Bob', 'age': '34'}
}

Penting untuk dipahami bahwa pada contoh sebelumnya Anda menganggap kuncinya ada di kamus seperti ini

Tapi mari kita lihat apa yang terjadi jika tidak demikian

Misalnya, mari kita coba mencari data siswa dari seorang siswa dengan ID 999

Alice
3

Ini menghasilkan kesalahan yang merusak program

Alice
4

Jika seseorang secara tidak sengaja memasukkan nilai yang salah di kamus, Anda tidak ingin seluruh program macet

Untuk mencegahnya, Anda bisa menggunakan kamus. metode get() untuk mengakses nilai dengan lebih aman. Jika kunci yang diteruskan ke fungsi ini tidak ada, program tidak macet

Sebagai contoh

Alice
5

Keluaran

Alice
6

Seperti yang Anda lihat, hasilnya adalah Tidak ada, bukan kesalahan. Ini jauh lebih baik daripada merusak program

Untuk mengakses kamus bersarang dengan cara yang lebih aman ini

  1. Panggil kamus. metode get() pada kamus bersarang untuk mengakses kamus dalam
  2. Gunakan if-else untuk memastikan kamus yang dikembalikan tidak ada
  3. Panggil kamus. get() pada kamus dalam untuk mendapatkan nilai yang sesuai

Ini sebuah contoh

Alice
7

Keluaran

Alice
_8

Karena tidak ada kunci 999 di kamus siswa, kamus dalam yang dikembalikan adalah Tidak Ada. Jadi, hanya blok else yang dieksekusi

Sebagai referensi, pastikan kode ini juga berfungsi saat kuncinya ada

Alice
_9

Keluaran

Alice

Seperti yang Anda lihat, ini adalah cara yang lebih aman untuk mengakses nilai kamus bersarang. Apakah nilainya ada atau tidak, program tidak macet karena kesalahan

Bagaimana Cara Menambahkan Nilai ke Kamus Bersarang?

Untuk memperkenalkan nilai baru ke kamus bersarang, Anda perlu menggunakan operator akses kamus sekali lagi

Misalnya, mari tambahkan kunci hobi baru ke salah satu objek siswa di kamus siswa

student = {'name' : 'Alice', 'age': '23'}
_1

Keluaran

student = {'name' : 'Alice', 'age': '23'}
_2

Perhatikan bahwa contoh ini hanya berfungsi jika kunci 123 ada. Jika tidak, program akan macet. Jadi pastikan untuk memeriksa kuncinya ada di kamus sebelum menambahkan nilai ke dalamnya

student = {'name' : 'Alice', 'age': '23'}
_3

Bagaimana Cara Menghapus Nilai dari Kamus Bersarang?

Menghapus nilai dari kamus bersarang tidak berbeda dengan menghapus nilai dari kamus satu dimensi. Yang perlu Anda lakukan hanyalah mengakses nilainya dan memanggil operator del di atasnya

Misalnya, mari kita hapus nama siswa dengan ID 123

student = {'name' : 'Alice', 'age': '23'}
_4

Keluaran

student = {'name' : 'Alice', 'age': '23'}
5

Bagaimana Cara Menambahkan Kamus Lain ke Kamus Bersarang?

Menambahkan kamus baru di kamus bersarang tidak berbeda dengan menambahkan nilai baru ke kamus biasa. Alih-alih menambahkan satu nilai ke kunci, Anda menambahkan seluruh kamus

Untuk menambahkan pasangan nilai kunci baru ke kamus, gunakan operator akses kamus. Lewati operator akses kunci baru sebagai argumen dan berikan nilai padanya

Misalnya, mari tambahkan kamus siswa baru ke kamus siswa

student = {'name' : 'Alice', 'age': '23'}
_6

Keluaran

student = {'name' : 'Alice', 'age': '23'}
_7

Sekarang ada tiga siswa di kamus

Bagaimana Mengulang Melalui Kamus Bersarang?

Sekali lagi, tidak ada yang rumit saat mengulang kamus kamus

Untuk mengulangi kamus dengan Python, gunakan kamus. item() untuk mengonversi kamus dalam format yang dapat diubah. Kemudian tetapkan kunci dan nilai ke variabel sementara

Misalnya, mari cetak nama kamus siswa

student = {'name' : 'Alice', 'age': '23'}
_8

Keluaran

student = {'name' : 'Alice', 'age': '23'}
_9

Kesimpulan

Hari ini Anda belajar cara mengakses kamus di dalam kamus. Dengan kata lain, Anda belajar cara bekerja dengan kamus bersarang

Singkatnya, kamus bersarang adalah nama yang digunakan untuk merujuk ke kamus yang nilainya juga kamus

Untuk mengakses kamus bersarang ini di dalam kamus, aturan pengaksesan kamus yang sama berlaku

Bagaimana Anda meratakan kamus bersarang dengan Python?

Pada dasarnya dengan cara yang sama Anda akan meratakan daftar bersarang, Anda hanya perlu melakukan pekerjaan ekstra untuk mengulangi dict dengan kunci/nilai, membuat kunci baru untuk kamus baru Anda dan . Untuk Python >= 3. 3, ubah impor menjadi dari koleksi. . For Python >= 3.3, change the import to from collections.

Bagaimana cara mendapatkan semua nilai dari kamus bersarang di Python?

Akses Item Kamus Bersarang . Metode get() mengembalikan nilai untuk kunci jika kuncinya ada di kamus, jika tidak, ia mengembalikan Tidak ada. using the special dictionary get() method. The get() method returns the value for the key if the key is in the dictionary, otherwise, it returns None.

Bagaimana Anda menghapus kunci dari kamus bersarang?

Untuk menghapus kunci dari kamus bersarang. Gunakan perulangan for untuk mengulangi item kamus . Periksa apakah setiap kunci tidak ada dalam daftar kunci yang akan dihapus. Jika kunci saat ini bukan kamus, tambahkan pasangan kunci-nilai ke kamus baru. Jika kuncinya adalah kamus, panggil fungsinya secara rekursif.

Bagaimana Anda memecahkan kamus panjang dengan Python?

Anda dapat memutuskan baris dengan menambahkan `\` di akhir baris. – Mendekati. .
Memiliki akses kamus yang begitu dalam mungkin merupakan tanda bahwa Anda harus memperbaiki kode Anda. .
Saya setuju dengan @Felix tetapi jika Anda bersikeras, saya akan mengatakan tetap antrean panjang dan biarkan linter mengabaikan antrean