Anda pasti sudah familiar dengan kamus dengan Python. Namun, sebelum melanjutkan agenda artikel kita, mari kita rekap cepat kamus dengan Python
Kamus dengan Python adalah salah satu struktur data yang paling populer. Kamus digunakan untuk menyimpan data dalam format pasangan "nilai kunci". Kunci selalu unik di dalam kamus. Nilai kamus Python mungkin unik atau tidak. Kita bisa mendefinisikan kamus dengan menyertakan daftar key-value pair yang dipisahkan koma dalam kurung kurawal ({}). titik dua (. ) memisahkan setiap kunci dari nilai terkaitnya
Jadi, apa itu Kamus Bersarang?
Di Python, kamus bersarang adalah kamus di dalam kamus. Pada dasarnya, ini adalah kumpulan kamus yang disimpan di dalam satu kamus
Kamus bersarang adalah salah satu cara untuk merepresentasikan dan menyimpan informasi terstruktur (mirip dengan beberapa 'catatan' dalam bahasa lain)
Di bawah ini diberikan adalah contoh sederhana dari kamus bersarang
my_dict = { 'dict1': {'key_A': 'value_A'}, 'dict2': {'key_B': 'value_B'}}
Kami akan memahami kode di atas secara mendalam lebih jauh
Membuat Kamus Bersarang
Membuat kamus bersarang sangat mirip dengan cara kami membuat kamus normal lainnya. Ada perbedaan yang sangat mendasar bahwa, dalam kamus bersarang, nilainya juga bisa berupa kamus
Mari kita pahami ini dengan jelas melalui sebuah contoh. Misalkan, kami menyimpan catatan 3 siswa dalam kamus. Katakanlah, seorang siswa memiliki sifat-sifat berikut. Nama, Kelas, dan No
Kami dapat mewakili ini dengan sangat jelas melalui kamus bersarang
school = {'student1': {'name': 'Ace', 'roll': '10', 'class': '5'}, 'student2': {'name': 'Bob', 'roll': '15', 'class': '5'}, 'student3': {'name': 'Ron', 'roll': '18', 'class': '6'}} _
Penjelasan. Pada contoh di atas, kami telah membuat kamus bernama "sekolah". Ini adalah kamus bersarang yang memiliki indeks siswa sebagai kunci dan properti siswa seperti nama, daftar, dan kelas adalah nilai dari kunci. Tapi di sini, harap perhatikan bahwa setiap kunci dipetakan ke nilai yang merupakan kamus itu sendiri. Dengan kata sederhana, nilai-nilai dalam kamus ini adalah kamus itu sendiri. Jadi, inilah cara kami membuat kamus bersarang
Mari kita juga belajar tentang cara penting membuat kamus bersarang
Konstruktor dict()
Ada "konstruktor tipe" yang disebut dict() dengan Python, yang dapat digunakan untuk membuat kamus python dari argumen kata kunci atau segala jenis pasangan nilai kunci. Ia bahkan dapat membuat kamus dari kamus lain dan argumen kata kunci
Istilah-istilah ini mungkin tidak masuk akal bagi Anda, oleh karena itu mari kita pahami bagaimana konstruktor dict() digunakan untuk membuat kamus bersarang melalui contoh-contoh mudah
1. Argumen Kata Kunci untuk Kamus Bersarang
Untuk membuat kamus bersarang, kita cukup memberikan kunci kamus kita. pasangan nilai sebagai argumen kata kunci ke konstruktor dict(). Sebagai contoh, lihat kode di bawah ini --
# using the dict constructor to convert # Keyword Arguments to nested dictionary school = dict('student1'= {'name': 'Ace', 'roll': '10', 'class': '5'}, 'student2'= {'name': 'Bob', 'roll': '15', 'class': '5'}, 'student3'= {'name': 'Ron', 'roll': '18', 'class': '6'}) print(school)
Keluaran
{'student1': {'name': 'Ace', 'roll': '10', 'class': '5'}, 'student2': {'name': 'Bob', 'roll': '15', 'class': '5'}, 'student3': {'name': 'Ron', 'roll': '18', 'class': '6'}}
Dalam contoh di atas, harap perhatikan bahwa kami telah menyertakan kamus kami ke dalam tanda kurung bulat '()' dan meneruskannya ke konstruktor dict() --
#using the dict() constructor dict('a'={...},'b'={...}) _
Hasilnya, konstruktor dict() mengubah argumen kata kunci di atas menjadi kamus bersarang
Klik di sini untuk membaca tentang Konstruktor dengan Python
2. Menggunakan metode zip() dengan Python
Fungsi zip() mengambil beberapa iterables (bisa nol atau lebih), merangkumnya dalam sebuah tupel, dan mengembalikannya. Kita dapat menggunakan zip untuk menggabungkan daftar kunci dan nilai yang terpisah. Kita juga bisa meneruskan daftar kunci dan nilai ke fungsi zip() di Python secara dinamis saat runtime
# student list contains the student indexes studentList = ['student1', 'student2', 'student3'] # studentinfo contains the information regarding the students studentInfo = ['student1'= {'name': 'Ace', 'roll': '10', 'class': '5'}, 'student2'= {'name': 'Bob', 'roll': '15', 'class': '5'}, 'student3'= {'name': 'Ron', 'roll': '18', 'class': '6'}] # zipping up the studentlist and studentinfo list into # a dictionary using the zip() method school = dic(zip(studentList, studentInfo)) print(school)
Keluaran
{'student1': {'name': 'Ace', 'roll': '10', 'class': '5'}, 'student2': {'name': 'Bob', 'roll': '15', 'class': '5'}, 'student3': {'name': 'Ron', 'roll': '18', 'class': '6'}}
3. Menggunakan Kamus Python fromkeys() Metode
Metode fromkeys() dalam kamus python membuat kamus baru dengan nilai default untuk semua kunci yang ditentukan. Jika kami tidak menentukan nilai default apa pun, semua kunci disetel ke Tidak Ada
Kode
#Syntax dict.fromkeys(keys,value) # Example # Create a dictionary and set default value 'Employee' for all keys emp = dict.fromkeys(['A', 'B', 'C'], 'Employee') print(emp)
Keluaran
{'A': 'Employee', 'B': 'Employee', 'C': 'Employee'} _
Kita bisa menggunakan dict. metode fromkeys() untuk membuat kamus bersarang dengan beberapa nilai default. Misalnya, perhatikan kode yang diberikan di bawah ini --
Kode
# student list contains the student indexes studentList = ['student1', 'student2', 'student3'] # studentinfo contains the default properties that should # be present for a student studentDefault = {'name':'','roll':'','class':''} # passing the studentList and studentDefault # to dic.fromkeys for creating nested dictionary school = dic.fromkeys(studentList, studentDefault) print(school) _
Keluaran
school = {'student1': {'name': 'Ace', 'roll': '10', 'class': '5'}, 'student2': {'name': 'Bob', 'roll': '15', 'class': '5'}, 'student3': {'name': 'Ron', 'roll': '18', 'class': '6'}} _0
Penjelasan. Seperti yang kami jelaskan di atas, fromkeys() membuat kamus berdasarkan kunci dan default nilai yang kami berikan padanya
Akses Item Kamus Bersarang
Kita dapat mengakses item kamus dengan menentukan kunci kamus dan kunci kamus bersarang ke dalam tanda kurung siku. Sebagai contoh, perhatikan kode di bawah ini
Kode
school = {'student1': {'name': 'Ace', 'roll': '10', 'class': '5'}, 'student2': {'name': 'Bob', 'roll': '15', 'class': '5'}, 'student3': {'name': 'Ron', 'roll': '18', 'class': '6'}} _1
Keluaran
Pengecualian. Jika kami mencoba mengakses pasangan kunci-nilai apa pun yang tidak ada di kamus kami, kami akan mendapatkan kesalahan kunci
Kode
school = {'student1': {'name': 'Ace', 'roll': '10', 'class': '5'}, 'student2': {'name': 'Bob', 'roll': '15', 'class': '5'}, 'student3': {'name': 'Ron', 'roll': '18', 'class': '6'}} _2
Keluaran
Namun, kami dapat mencegah kode kami jatuh ke kesalahan kunci apa pun. Ini dapat dilakukan dengan menggunakan metode get() kamus khusus. Metode get() mengembalikan nilai untuk kunci jika kuncinya ada di kamus, jika tidak, ia mengembalikan Tidak ada. Karenanya, kami tidak pernah mendapatkan keyError jika kami menggunakan metode ini
Kode
school = {'student1': {'name': 'Ace', 'roll': '10', 'class': '5'}, 'student2': {'name': 'Bob', 'roll': '15', 'class': '5'}, 'student3': {'name': 'Ron', 'roll': '18', 'class': '6'}} _3
Keluaran
Menghapus Kamus dari Kamus Bersarang
Menghapus kamus dari kamus bersarang adalah operasi langsung, untuk itu, kita dapat menggunakan kata kunci del python. Cara lain untuk menghapus kamus adalah dengan menggunakan metode pop() dengan python
1. Menggunakan metode pop()
pop() umumnya digunakan ketika kita menginginkan nilai kamus setelah menghapusnya. Jadi, pop() mengembalikan nilai. Sebagai contoh, lihat kode di bawah ini
Kode
school = {'student1': {'name': 'Ace', 'roll': '10', 'class': '5'}, 'student2': {'name': 'Bob', 'roll': '15', 'class': '5'}, 'student3': {'name': 'Ron', 'roll': '18', 'class': '6'}} _4
Keluaran
school = {'student1': {'name': 'Ace', 'roll': '10', 'class': '5'}, 'student2': {'name': 'Bob', 'roll': '15', 'class': '5'}, 'student3': {'name': 'Ron', 'roll': '18', 'class': '6'}} _5
2. Menggunakan kata kunci del
Cara lain untuk menghapus kamus adalah dengan menggunakan kata kunci del di Python. Ini umumnya digunakan ketika kita tidak menginginkan nilai yang dihapus. Sebagai contoh, lihat kode di bawah ini
Kode
school = {'student1': {'name': 'Ace', 'roll': '10', 'class': '5'}, 'student2': {'name': 'Bob', 'roll': '15', 'class': '5'}, 'student3': {'name': 'Ron', 'roll': '18', 'class': '6'}} _6
Keluaran
school = {'student1': {'name': 'Ace', 'roll': '10', 'class': '5'}, 'student2': {'name': 'Bob', 'roll': '15', 'class': '5'}, 'student3': {'name': 'Ron', 'roll': '18', 'class': '6'}} _7
Kita dapat menambah atau memperbarui elemen kamus bersarang dengan sangat sederhana. Namun, ada perbedaan saat kami mencoba menambahkan kunci baru ke kamus kami atau memperbarui kunci yang ada. Perbedaannya adalah --
- Jika kunci sudah ada di kamus, nilainya akan diperbarui
- Jika kunci tidak ada dalam kamus, kunci baru. pasangan nilai ditambahkan ke kamus
Mari kita pahami secara mendalam di bawah ini melalui kode. Jika kita menambahkan pasangan nilai kunci ke kamus bersarang, dengan kunci yang sudah ada di kamus bersarang asli, maka nilai lama akan diperbarui. Sebagai contoh, lihat kode di bawah ini
Kode
school = {'student1': {'name': 'Ace', 'roll': '10', 'class': '5'}, 'student2': {'name': 'Bob', 'roll': '15', 'class': '5'}, 'student3': {'name': 'Ron', 'roll': '18', 'class': '6'}} _8
Keluaran
school = {'student1': {'name': 'Ace', 'roll': '10', 'class': '5'}, 'student2': {'name': 'Bob', 'roll': '15', 'class': '5'}, 'student3': {'name': 'Ron', 'roll': '18', 'class': '6'}} _9
Penjelasan. Pada contoh di atas, kami mencoba menambahkan elemen ke kamus, tetapi perlu diketahui bahwa kuncinya sudah ada di kamus kami. Karena kunci sudah ada di kamus, nilainya diganti dengan yang baru
Mari kita lihat dengan menambahkan elemen baru ke kamus kita
Kode
# using the dict constructor to convert # Keyword Arguments to nested dictionary school = dict('student1'= {'name': 'Ace', 'roll': '10', 'class': '5'}, 'student2'= {'name': 'Bob', 'roll': '15', 'class': '5'}, 'student3'= {'name': 'Ron', 'roll': '18', 'class': '6'}) print(school) 0
Keluaran
# using the dict constructor to convert # Keyword Arguments to nested dictionary school = dict('student1'= {'name': 'Ace', 'roll': '10', 'class': '5'}, 'student2'= {'name': 'Bob', 'roll': '15', 'class': '5'}, 'student3'= {'name': 'Ron', 'roll': '18', 'class': '6'}) print(school) 1
Dalam contoh ini, kami telah menggunakan kunci baru sehingga langsung ditambahkan ke kamus bersarang kami. Dan, karenanya kamus memiliki elemen baru yang ditambahkan. Jadi ini adalah perbedaan utama, jika kunci kita sudah ada di kamus kita maka kamus kita akan diperbarui, jika tidak, pasangan nilai kunci baru ditambahkan ke kamus
Hapus Elemen dari Kamus Bersarang
Kami telah melihat cara menghapus item kamus dari kamus bersarang. Di sini kita akan mempelajari cara menghapus satu elemen atau nilai dari kamus bersarang
Menghapus nilai dari kamus bersarang sangat mirip dengan menghapus item kamus itu sendiri. Terutama ada 2 cara (tepatnya 3). Mari kita pelajari masing-masing
Menggunakan kata kunci del dengan Python
Kita dapat menggunakan kata kunci del untuk menghapus elemen dari kamus bersarang kita. Namun, del tidak mengembalikan apa pun sehingga kami tidak dapat mengambil elemen yang telah kami hapus dengan menggunakannya. Mari kita lihat contoh untuk menunjukkan penggunaannya
Kode
# using the dict constructor to convert # Keyword Arguments to nested dictionary school = dict('student1'= {'name': 'Ace', 'roll': '10', 'class': '5'}, 'student2'= {'name': 'Bob', 'roll': '15', 'class': '5'}, 'student3'= {'name': 'Ron', 'roll': '18', 'class': '6'}) print(school) 2
Keluaran
# using the dict constructor to convert # Keyword Arguments to nested dictionary school = dict('student1'= {'name': 'Ace', 'roll': '10', 'class': '5'}, 'student2'= {'name': 'Bob', 'roll': '15', 'class': '5'}, 'student3'= {'name': 'Ron', 'roll': '18', 'class': '6'}) print(school) _3
Penjelasan. Pada contoh di atas, kami menggunakan kata kunci del untuk menghapus nilai dari kamus. Kami mengambil nilai kamus menggunakan kunci. Kami juga dapat menggunakan pengindeksan untuk menghapus elemen pada indeks tertentu
Menggunakan metode pop()
Kita dapat menggunakan metode pop() untuk menghapus elemen dari kamus bersarang kita. Berbeda dengan kata kunci del, pop() mengembalikan nilai setiap kali menghapus item apa pun. Jadi, disarankan untuk menggunakan metode pop() setiap kali kita ingin mengambil nilai dari elemen yang kita hapus. Di bawah ini adalah contoh penggunaan pop untuk menghapus elemen
Kode
# using the dict constructor to convert # Keyword Arguments to nested dictionary school = dict('student1'= {'name': 'Ace', 'roll': '10', 'class': '5'}, 'student2'= {'name': 'Bob', 'roll': '15', 'class': '5'}, 'student3'= {'name': 'Ron', 'roll': '18', 'class': '6'}) print(school) _4
Keluaran
# using the dict constructor to convert # Keyword Arguments to nested dictionary school = dict('student1'= {'name': 'Ace', 'roll': '10', 'class': '5'}, 'student2'= {'name': 'Bob', 'roll': '15', 'class': '5'}, 'student3'= {'name': 'Ron', 'roll': '18', 'class': '6'}) print(school) 5
Penjelasan. Seperti dijelaskan di atas, kami mengambil nilai elemen kamus yang akan dihapus menggunakan kunci kamus bersarang. Nanti, kami menyimpan nilai elemen yang dimunculkan menggunakan pop()
Iterasi melalui Setiap Elemen dalam Kamus Bersarang
Dalam kamus normal, kita dapat mengulang kamus menggunakan dict. item(). Namun, tidak demikian halnya dengan kamus bersarang. Di sini, kita dapat memiliki kamus di dalam kamus dan karenanya kita harus pergi ke satu tingkat lagi untuk mengulangi nilainya
Kita dapat melakukan iterasi dalam kamus bersarang menggunakan for-loop bersarang. Mari kita lihat kode kita untuk memahaminya dengan lebih baik
Kode
# using the dict constructor to convert # Keyword Arguments to nested dictionary school = dict('student1'= {'name': 'Ace', 'roll': '10', 'class': '5'}, 'student2'= {'name': 'Bob', 'roll': '15', 'class': '5'}, 'student3'= {'name': 'Ron', 'roll': '18', 'class': '6'}) print(school) 6
Keluaran
# using the dict constructor to convert # Keyword Arguments to nested dictionary school = dict('student1'= {'name': 'Ace', 'roll': '10', 'class': '5'}, 'student2'= {'name': 'Bob', 'roll': '15', 'class': '5'}, 'student3'= {'name': 'Ron', 'roll': '18', 'class': '6'}) print(school) 7
Penjelasan. Dalam contoh di atas, pertama-tama kita mengulang item kamus, yang pada gilirannya memberi kita pasangan nilai kunci keykeykey, valvalval. Sekarang, valvalval nilai yang dihasilkan adalah kamus lain. Oleh karena itu, kami mengulangi val. item() untuk mendapatkan nestedKeynestedKeynestedKey dan nestedValnestedValnestedVal. Kode ini akan berfungsi dengan baik jika kita hanya memiliki satu level kamus bersarang. Untuk n-level kamus bersarang, ini bukan cara yang tepat
Pada artikel ini, kita belajar bagaimana kita bisa mengulangi kamus bersarang yang bersarang 1 level (hanya 1 kamus di dalam kamus). Namun, ada kasus di mana kita mungkin memiliki n-level kamus bersarang. Bagi mereka, cara paling sederhana untuk melakukan iterasi adalah dengan memanggilnya secara rekursif ke setiap level nesting. Harap dicatat, bahwa kamus bertingkat n-level tidak termasuk dalam cakupan artikel ini
Menggabungkan Dua Kamus Bersarang
Dua kamus bersarang dapat digabungkan menggunakan metode update() dengan Python
Metode update() memperbarui kamus dengan kunci. pasangan nilai dari elemen
- Jika kunci sudah ada di kamus, nilainya akan diperbarui
- Jika kunci tidak ada dalam kamus, kunci baru. pasangan nilai ditambahkan ke kamus
Sintaksis
# using the dict constructor to convert # Keyword Arguments to nested dictionary school = dict('student1'= {'name': 'Ace', 'roll': '10', 'class': '5'}, 'student2'= {'name': 'Bob', 'roll': '15', 'class': '5'}, 'student3'= {'name': 'Ron', 'roll': '18', 'class': '6'}) print(school) _8
Mari kita lihat kode di bawah ini untuk memperbarui kamus apapun
Kode
# using the dict constructor to convert # Keyword Arguments to nested dictionary school = dict('student1'= {'name': 'Ace', 'roll': '10', 'class': '5'}, 'student2'= {'name': 'Bob', 'roll': '15', 'class': '5'}, 'student3'= {'name': 'Ron', 'roll': '18', 'class': '6'}) print(school) _9
Keluaran
{'student1': {'name': 'Ace', 'roll': '10', 'class': '5'}, 'student2': {'name': 'Bob', 'roll': '15', 'class': '5'}, 'student3': {'name': 'Ron', 'roll': '18', 'class': '6'}} 0
Penjelasan. Pada contoh di atas, kami memperbarui kamus my_dict1 dengan kamus my_dict2. Saat melakukannya, kunci mana pun yang sudah ada di my_dict1 akan ditimpa oleh kunci my_dict2. Dan, jika kuncinya tidak ada, maka kunci baru akan ditambahkan. Misalnya, kunci BBB diperbarui di kamus my_dict1. Dan kunci DDD baru ditambahkan di my_dict1, karena belum ada
Kesimpulan penting
- metode update() secara membabi buta menimpa nilai dari kunci yang sama jika ada bentrokan (atau kunci yang sama dalam 2 kamus)
- update() metode memperbarui kamus secara langsung, itu tidak mengembalikan apa pun
Tautan ke Artikel Serupa Lainnya --
Artikel ini mencakup semua poin utama yang perlu Anda ketahui untuk mendapatkan gambaran singkat tentang kamus bersarang di Python. Anda juga dapat merujuk ke artikel scaler di bawah ini untuk mengetahui lebih banyak tentang Kamus dengan Python. Juga, prasyarat untuk artikel ini adalah kamus dengan Python
Pada artikel ini, kita belajar tentang kamus bersarang dengan Python. Mari kita rekap apa yang telah kita pelajari selama ini