Perhatikan bagaimana nilai kunci duplikat 'a' adalah nilai dict terakhir dan bukan dict pertama dalam daftar dict
Untuk menggabungkan beberapa kamus, cara yang paling Pythonic adalah dengan menggunakan pemahaman kamus {k:v for x in l for k,v in x.items()} untuk terlebih dahulu mengulangi semua kamus dalam daftar {'a': 4, 'b': 1, 'c': 2, 'd': 3, 'e': 4}0 dan kemudian mengulangi semua pasangan (kunci, nilai) di setiap kamus
Mari jelajahi semua opsi yang tersedia di artikel yang tersisa
Latihan. Jalankan kode—metode mana yang menghasilkan keluaran berbeda dari semua metode lainnya?
Metode 1. Pemahaman Kamus Dengan Konteks Bersarang
Anda dapat menggunakan pemahaman kamus {k:v for x in l for k,v in x.items()}_ untuk terlebih dahulu mengulangi semua kamus dalam daftar {'a': 4, 'b': 1, 'c': 2, 'd': 3, 'e': 4}0 dan kemudian mengulangi semua pasangan (kunci, nilai) di setiap kamus
- Buat kamus baru menggunakan notasi {'a': 4, 'b': 1, 'c': 2, 'd': 3, 'e': 4}3
- Periksa semua kamus dalam daftar kamus {'a': 4, 'b': 1, 'c': 2, 'd': 3, 'e': 4}0 dengan menggunakan lingkaran luar {'a': 4, 'b': 1, 'c': 2, 'd': 3, 'e': 4}5
- Telusuri semua pasangan (kunci, nilai) dalam kamus saat ini {'a': 4, 'b': 1, 'c': 2, 'd': 3, 'e': 4}6 dengan menggunakan metode {'a': 4, 'b': 1, 'c': 2, 'd': 3, 'e': 4}7 yang mengembalikan iterable pasangan (kunci, nilai)
- Isi kamus baru dengan pasangan (kunci, nilai) {'a': 4, 'b': 1, 'c': 2, 'd': 3, 'e': 4}8 menggunakan sintaks pemahaman kamus umum {'a': 4, 'b': 1, 'c': 2, 'd': 3, 'e': 4}9
Ini adalah cara paling Pythonic untuk menggabungkan beberapa kamus menjadi satu dan berfungsi untuk sejumlah kamus yang berubah-ubah
Metode 2. Loop Bersarang Sederhana
Gunakan loop bersarang sederhana untuk menambahkan setiap pasangan (kunci, nilai) secara terpisah ke kamus yang baru dibuat
- Buat kamus baru yang kosong
- Periksa setiap kamus dalam daftar kamus
- Telusuri setiap pasangan (kunci, nilai) dalam kamus saat ini
- Tambahkan pasangan (kunci, nilai) ke kamus baru—mungkin menimpa kunci "lama" dengan yang sekarang
Anda dapat memvisualisasikan alur eksekusi kode ini di sini
Ini adalah yang paling mudah dibaca oleh banyak pembuat kode pemula—tetapi jauh lebih ringkas dan kurang Pythonic
Metode 3. Gunakan metode update()
Metode l = [{'a': 0}, {'b': 1}, {'c': 2}, {'d': 3}, {'e': 4, 'a': 4}] d = {k:v for x in l for k,v in x.items()} print(d) # {'a': 4, 'b': 1, 'c': 2, 'd': 3, 'e': 4}0 memperbarui kamus yang disebutnya dengan sekumpulan pasangan baru (kunci, nilai) yang diberikan dalam argumen kamus {'a': 4, 'b': 1, 'c': 2, 'd': 3, 'e': 4}6. Metode untuk menggabungkan beberapa kamus itu sederhana
- Buat kamus baru yang kosong
- Periksa setiap kamus dalam daftar kamus
- Perbarui kamus baru dengan nilai dalam kamus saat ini
Ini adalah cara yang sangat mudah dibaca dan efisien dan lebih pendek dari metode 2
Metode 4. Pembongkaran Kamus
Saat diterapkan ke kamus l = [{'a': 0}, {'b': 1}, {'c': 2}, {'d': 3}, {'e': 4, 'a': 4}] d = {k:v for x in l for k,v in x.items()} print(d) # {'a': 4, 'b': 1, 'c': 2, 'd': 3, 'e': 4}2, operator asterisk ganda l = [{'a': 0}, {'b': 1}, {'c': 2}, {'d': 3}, {'e': 4, 'a': 4}] d = {k:v for x in l for k,v in x.items()} print(d) # {'a': 4, 'b': 1, 'c': 2, 'd': 3, 'e': 4}3 membongkar semua elemen di l = [{'a': 0}, {'b': 1}, {'c': 2}, {'d': 3}, {'e': 4, 'a': 4}] d = {k:v for x in l for k,v in x.items()} print(d) # {'a': 4, 'b': 1, 'c': 2, 'd': 3, 'e': 4}2 ke dalam kamus luar. Anda hanya dapat menggunakan metode "pembongkaran kamus" ini dalam lingkungan (dalam kasus kami, kamus) yang mampu menangani pasangan (kunci, nilai)
Catatan tambahan. Terkadang juga digunakan untuk argumen kata kunci
l = [{'a': 0}, {'b': 1}, {'c': 2}, {'d': 3}, {'e': 4, 'a': 4}] d = {**l[0], **l[1], **l[2], **l[3], **l[4]} print(d) # {'a': 4, 'b': 1, 'c': 2, 'd': 3, 'e': 4}Ini adalah cara yang ringkas, efisien, dan Pythonic untuk menggabungkan beberapa kamus
Namun, itu tidak optimal karena Anda harus mengetik secara manual setiap operasi pembongkaran. Jika kamus memiliki 100 elemen, ini tidak mungkin dilakukan
Catatan. Anda tidak dapat menggunakan pembongkaran kamus dalam pemahaman kamus untuk mengatasi masalah ini—Python akan melempar SyntaxError
Metode 5. Gunakan ChainMap Dengan Membongkar
Jika Anda tidak puas dengan salah satu dari metode tersebut, Anda juga dapat menggunakan struktur data l = [{'a': 0}, {'b': 1}, {'c': 2}, {'d': 3}, {'e': 4, 'a': 4}] d = {k:v for x in l for k,v in x.items()} print(d) # {'a': 4, 'b': 1, 'c': 2, 'd': 3, 'e': 4}5 dari perpustakaan
l = [{'a': 0}, {'b': 1}, {'c': 2}, {'d': 3}, {'e': 4, 'a': 4}] from collections import ChainMap d = dict(ChainMap(*l)) print(d) # {'e': 4, 'a': 0, 'd': 3, 'c': 2, 'b': 1}Namun, ini tidak sepenuhnya memenuhi spesifikasi kami. kamus kelima dalam koleksi kami tidak menimpa pasangan (kunci, nilai) dari kamus pertama
Selain itu, ini adalah cara cepat untuk menggabungkan beberapa kamus dan saya ingin menyertakannya di sini agar dapat dipahami
Kemana Pergi Dari Sini?
Cukup teori. Mari kita berlatih
Pembuat kode dibayar enam digit atau lebih karena mereka dapat memecahkan masalah dengan lebih efektif menggunakan kecerdasan mesin dan otomasi
Untuk menjadi lebih sukses dalam pengkodean, selesaikan lebih banyak masalah nyata untuk orang-orang nyata. Begitulah cara Anda memoles keterampilan yang benar-benar Anda butuhkan dalam latihan. Lagi pula, apa gunanya teori belajar yang tidak dibutuhkan siapa pun?
Anda membangun keterampilan pengkodean bernilai tinggi dengan mengerjakan proyek pengkodean praktis
Apakah Anda ingin berhenti belajar dengan proyek mainan dan fokus pada proyek kode praktis yang memberi Anda uang dan memecahkan masalah nyata bagi orang-orang?
🚀 Jika jawaban Anda adalah YA. , pertimbangkan untuk menjadi pengembang lepas Python. Ini adalah cara terbaik untuk mendekati tugas meningkatkan keterampilan Python Anda—bahkan jika Anda benar-benar pemula
Jika Anda hanya ingin belajar tentang peluang freelancing, jangan ragu untuk menonton webinar gratis saya “Bagaimana Membangun Keterampilan Berpenghasilan Tinggi Anda Python” dan pelajari bagaimana saya mengembangkan bisnis coding saya secara online dan bagaimana Anda juga bisa—dari kenyamanan Anda
Bergabunglah dengan webinar gratis sekarang
Chris
Saat bekerja sebagai peneliti dalam sistem terdistribusi, Dr. Christian Mayer menemukan cintanya untuk mengajar siswa ilmu komputer
Untuk membantu siswa mencapai tingkat kesuksesan Python yang lebih tinggi, dia mendirikan situs web pendidikan pemrograman Finxter. com. Dia adalah penulis buku pemrograman populer Python One-Liners (NoStarch 2020), rekan penulis seri Coffee Break Python dari buku yang diterbitkan sendiri, penggemar ilmu komputer, pekerja lepas, dan pemilik salah satu dari 10 blog Python terbesar di dunia
Kesukaannya adalah menulis, membaca, dan coding. Tetapi hasrat terbesarnya adalah untuk melayani calon pembuat kode melalui Finxter dan membantu mereka meningkatkan keterampilan mereka. Anda dapat bergabung dengan akademi email gratisnya di sini