Tarik data dari kamus python bersarang

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

Tarik data dari kamus python bersarang

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)

Tarik data dari kamus python bersarang

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

Tarik data dari kamus python bersarang

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

  1. metode update() secara membabi buta menimpa nilai dari kunci yang sama jika ada bentrokan (atau kunci yang sama dalam 2 kamus)
  2. 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

Bagaimana cara mengambil nilai dari kamus bersarang dengan 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 mengakses data dari kamus bersarang di Python?

Untuk mengakses elemen kamus bersarang, kami menggunakan sintaks [] pengindeksan dengan Python.

Bagaimana cara mengekstrak data dari kamus dengan Python?

Berikut adalah 3 pendekatan untuk mengekstrak nilai kamus sebagai daftar dengan Python. .
(1) Menggunakan fungsi list(). my_list = daftar(my_dict. nilai())
(2) Menggunakan Pemahaman Daftar. my_list = [i untuk i di my_dict. nilai()]
(3) Menggunakan For Loop. my_list = [] untuk i di my_dict. nilai(). daftarku. tambahkan (i)

Bagaimana cara mengonversi kamus bersarang ke Bingkai Data?

Kami pertama-tama mengambil daftar kamus bersarang dan mengekstrak baris data darinya. Kemudian kami membuat loop for lainnya untuk menambahkan baris ke dalam daftar baru yang awalnya dibuat kosong. Akhirnya kami menerapkan fungsi DataFrames di perpustakaan panda untuk membuat Bingkai Data