Python dict memperbarui kunci duplikat

Kamus literal dibangun dalam urutan yang diberikan dalam sumber. Ini berarti bahwa jika kunci digandakan, pasangan kunci-nilai kedua akan menimpa yang pertama karena kamus hanya dapat memiliki satu nilai per kunci

Rekomendasi

Periksa kesalahan ketik untuk memastikan bahwa kunci seharusnya sama. Jika mereka kemudian memutuskan nilai mana yang diinginkan dan menghapus yang lain

Contoh

Contoh ini akan menampilkan "c" karena pemetaan antara 2 dan "b" ditimpa oleh pemetaan dari 2 ke "c". Pemrogram mungkin bermaksud memetakan 3 ke "c".

Kamus Python tidak mengizinkan kunci diulang. Namun, kami dapat menggunakan defaultdict untuk menemukan solusinya. Kelas ini didefinisikan dalam modul koleksi

Gunakan daftar sebagai pabrik default untuk objek defaultdict

>>> from collections import defaultdict
>>> d=defaultdict(list)

Berikut adalah daftar tupel masing-masing dengan dua item. Item pertama ditemukan berulang kali digunakan. Daftar ini dikonversi dalam defaultdict

Hampir semua jenis nilai dapat digunakan sebagai kunci kamus di Python. Anda bahkan dapat menggunakan objek bawaan seperti tipe dan fungsi. Namun, ada beberapa batasan yang harus dipatuhi oleh kunci kamus

Pertama, kunci yang diberikan hanya dapat muncul sekali dalam kamus. Kunci duplikat tidak diperbolehkan. Kamus memetakan setiap kunci ke nilai yang sesuai, jadi tidak masuk akal untuk memetakan kunci tertentu lebih dari satu kali. Jika Anda menentukan kunci untuk kedua kalinya selama pembuatan kamus awal, kemunculan kedua akan menggantikan yang pertama

Kedua, kunci kamus harus dari jenis yang tidak dapat diubah. Misalnya, Anda dapat menggunakan integer, float, string, atau Boolean sebagai kunci kamus. Namun, baik daftar maupun kamus lain tidak dapat berfungsi sebagai kunci kamus, karena daftar dan kamus dapat diubah. Sebaliknya, nilai dapat berupa jenis apa saja dan dapat digunakan lebih dari satu kali

Joshua Dougas di

Saya terkejut bahwa pesan kesalahan untuk kunci daftar tidak menyebutkan perubahan sama sekali

Saya bermain-main dan menemukan bahwa objek yang dapat berubah benar-benar berfungsi sebagai kunci, selama objek tersebut dapat di-hash. Kita dapat membuat daftar turunan yang hashable dengan mengimplementasikan metode hash() menggunakan beberapa skema arbitrer

Saya melakukan ini di bawah dan menemukan bahwa objek yang dapat berubah sebenarnya berfungsi sebagai kunci kamus, hanya saja menggunakan kunci yang dapat berubah dapat menyebabkan hasil yang tidak terduga

Misalnya jika Anda menambahkan item menggunakan kunci yang dapat diubah dan kemudian mengubah kunci secara permanen, maka Anda berisiko 'kehilangan' nilai terkait. Saya yakin ada banyak peringatan lain, seperti tabrakan, juga

Dalam tutorial sebelumnya, kita belajar tentang Python Dictionaries dan melihat bahwa mereka dianggap sebagai kumpulan yang tidak terurut dengan pasangan

books1 = {1: 'You Dont Know JS', 2: 'Eloquent JavaScript', 3: 'Learn JavaScript Visually'}
28, di mana kunci digunakan untuk mengakses item yang bertentangan dengan posisi, seperti dalam daftar misalnya

Dalam tip singkat ini, saya akan menunjukkan cara menggabungkan (menggabungkan) dua kamus menjadi satu. Sebelum kita mulai, saya sarankan Anda membuka IDE Python online ini untuk menjalankan blok kode berikut dan melihat hasilnya

Menggunakan Metode books1 = {1: 'You Dont Know JS', 2: 'Eloquent JavaScript', 3: 'Learn JavaScript Visually'} _29

Katakanlah kita memiliki dua kamus berikut

1
books1 = {1: 'You Dont Know JS', 2: 'Eloquent JavaScript', 3: 'Learn JavaScript Visually'}
2
books2 = {4: 'JavaScript and jQuery', 5: 'Simplifying JavaScript'}

Bagaimana kita bisa menggabungkan kedua kamus itu dalam satu kamus? . Sebagaimana dinyatakan dalam dokumentasi Python

Perbarui kamus dengan pasangan kunci/nilai dari yang lain, menimpa kunci yang sudah ada. Kembalikan 
books1 = {1: 'You Dont Know JS', 2: 'Eloquent JavaScript', 3: 'Learn JavaScript Visually'}
_31
menerima objek kamus lain atau iterable dari pasangan kunci/nilai (sebagai tupel atau iterable lainnya dengan panjang dua). Jika argumen kata kunci ditentukan, kamus kemudian diperbarui dengan pasangan kunci/nilai tersebut.
books1 = {1: 'You Dont Know JS', 2: 'Eloquent JavaScript', 3: 'Learn JavaScript Visually'}
_33

Jadi, untuk menggabungkan kamus

books1 = {1: 'You Dont Know JS', 2: 'Eloquent JavaScript', 3: 'Learn JavaScript Visually'}
_34 menjadi
books1 = {1: 'You Dont Know JS', 2: 'Eloquent JavaScript', 3: 'Learn JavaScript Visually'}
35, sertakan dan jalankan kode berikut di IDE Python Anda

1
books1.update(books2)
2
_________14__15_______

Dalam hal ini, Anda akan mendapatkan output berikut

1
books1 = {1: 'You Dont Know JS', 2: 'Eloquent JavaScript', 3: 'Learn JavaScript Visually'}
0
2
books1 = {1: 'You Dont Know JS', 2: 'Eloquent JavaScript', 3: 'Learn JavaScript Visually'}
2
3

Jika Anda menggabungkan

books1 = {1: 'You Dont Know JS', 2: 'Eloquent JavaScript', 3: 'Learn JavaScript Visually'}
_35 menjadi
books1 = {1: 'You Dont Know JS', 2: 'Eloquent JavaScript', 3: 'Learn JavaScript Visually'}
34 seperti pada kode berikut

1
books1 = {1: 'You Dont Know JS', 2: 'Eloquent JavaScript', 3: 'Learn JavaScript Visually'}
2
________6__14_______
books1 = {1: 'You Dont Know JS', 2: 'Eloquent JavaScript', 3: 'Learn JavaScript Visually'}
9
2
0
2
1
2
2
2
3

Anda akan mendapatkan kamus yang disusun ulang sebagai output

1
2
5
2
2
7
3

Namun, ada masalah saat menggunakan ________1______29 untuk menggabungkan dua kamus. Masalahnya terletak pada kenyataan bahwa kamus asli dapat dimodifikasi. Dengan kata lain, dalam kasus pertama misalnya,

books1 = {1: 'You Dont Know JS', 2: 'Eloquent JavaScript', 3: 'Learn JavaScript Visually'}
39 , versi asli dari
books1 = {1: 'You Dont Know JS', 2: 'Eloquent JavaScript', 3: 'Learn JavaScript Visually'}
35 could be modified, and in the latter case,
books1 = {1: 'You Dont Know JS', 2: 'Eloquent JavaScript', 3: 'Learn JavaScript Visually'}
41, the original version of
books1 = {1: 'You Dont Know JS', 2: 'Eloquent JavaScript', 3: 'Learn JavaScript Visually'}
34, could be modified.

Misalnya, perhatikan kamus yang disusun ulang berikut ini

1
books1 = {1: 'You Dont Know JS', 2: 'Eloquent JavaScript', 3: 'Learn JavaScript Visually'}
2
books2 = {4: 'JavaScript and jQuery', 5: 'Simplifying JavaScript'}
2
3
books1 = {1: 'You Dont Know JS', 2: 'Eloquent JavaScript', 3: 'Learn JavaScript Visually'}
9
books1.update(books2)
2
1
2
2
print(books1)
books2 = {4: 'JavaScript and jQuery', 5: 'Simplifying JavaScript'}
9

Seperti yang mungkin telah Anda amati, kedua kamus memiliki kunci yang sama, yaitu

books1 = {1: 'You Dont Know JS', 2: 'Eloquent JavaScript', 3: 'Learn JavaScript Visually'}
43

Dalam hal ini, contoh pertama (yaitu, 'Pelajari JavaScript Secara Visual') akan dibuang, sehingga keluaran berikut akan ditampilkan

1
1
1
2
1
3
3

Kita akan belajar tentang cara menghindari perilaku ini nanti

Melewati Semua Item ke Kamus Baru dalam books1 = {1: 'You Dont Know JS', 2: 'Eloquent JavaScript', 3: 'Learn JavaScript Visually'} 44 Loop

Anda juga dapat menggabungkan dua kamus menggunakan loop Python

books1 = {1: 'You Dont Know JS', 2: 'Eloquent JavaScript', 3: 'Learn JavaScript Visually'}
44

Dalam hal ini, kami akan menetapkan kamus kosong ke variabel — yang saya sebut

books1 = {1: 'You Dont Know JS', 2: 'Eloquent JavaScript', 3: 'Learn JavaScript Visually'}
46 — dan kemudian untuk setiap kali kami mengulangi kedua kamus (yaitu,
books1 = {1: 'You Dont Know JS', 2: 'Eloquent JavaScript', 3: 'Learn JavaScript Visually'}
35 dan
books1 = {1: 'You Dont Know JS', 2: 'Eloquent JavaScript', 3: 'Learn JavaScript Visually'}
34), kami ingin menetapkan kunci dan nilai masing-masing .
books1 = {1: 'You Dont Know JS', 2: 'Eloquent JavaScript', 3: 'Learn JavaScript Visually'}
_46

Ini kode untuk itu

1
1
6
2
1
8
3
books1 = {1: 'You Dont Know JS', 2: 'Eloquent JavaScript', 3: 'Learn JavaScript Visually'}
9
books1.update(books2)
1
2
1
2
__________________________________________________________________________________________________________________________________________________

Kode ini juga akan memberikan output yang diinginkan

1
books1 = {1: 'You Dont Know JS', 2: 'Eloquent JavaScript', 3: 'Learn JavaScript Visually'}
0
2
2
8
3

Menggabungkan Dua Kamus dalam Ekspresi Tunggal Dengan Tanda Bintang Ganda

Metode lain yang dapat Anda gunakan untuk menggabungkan dua kamus, di mana Anda dapat melakukan tugas seperti itu dalam satu ekspresi, adalah dengan operator tanda bintang ganda (

books1 = {1: 'You Dont Know JS', 2: 'Eloquent JavaScript', 3: 'Learn JavaScript Visually'}
50)

1
books1 = {1: 'You Dont Know JS', 2: 'Eloquent JavaScript', 3: 'Learn JavaScript Visually'}
2
________6__14_______
books1 = {1: 'You Dont Know JS', 2: 'Eloquent JavaScript', 3: 'Learn JavaScript Visually'}
9
3
6
2
1
2
2
2
4
books2 = {4: 'JavaScript and jQuery', 5: 'Simplifying JavaScript'}
9

Menggunakan tanda bintang ganda menandakan bahwa kita ingin menggabungkan kamus

books1 = {1: 'You Dont Know JS', 2: 'Eloquent JavaScript', 3: 'Learn JavaScript Visually'}
34 menjadi
books1 = {1: 'You Dont Know JS', 2: 'Eloquent JavaScript', 3: 'Learn JavaScript Visually'}
35

Menjalankan kode ini akan memberi Anda 

books1 = {1: 'You Dont Know JS', 2: 'Eloquent JavaScript', 3: 'Learn JavaScript Visually'}
53 pesan. Agar kode ini berfungsi, Anda harus mengubah kunci menjadi string

________3__3_______6

2
1
8
3
books1 = {1: 'You Dont Know JS', 2: 'Eloquent JavaScript', 3: 'Learn JavaScript Visually'}
9
3
6
2
1
2
2
2
4
books2 = {4: 'JavaScript and jQuery', 5: 'Simplifying JavaScript'}
9

Sekarang, menjalankan kode akan memberi Anda hasil yang diinginkan

1
1
3
2
1
5
3

Mempertahankan Nilai Kunci

Kembali ke masalah sebelumnya tentang mempertahankan nilai kunci, bagaimana kita dapat menggabungkan dua kamus sambil mempertahankan aslinya dari setiap kamus?

Solusinya adalah sebagai berikut (diambil dari jawaban di )

1
1
8
2
books1 = {1: 'You Dont Know JS', 2: 'Eloquent JavaScript', 3: 'Learn JavaScript Visually'}
00
3
books1 = {1: 'You Dont Know JS', 2: 'Eloquent JavaScript', 3: 'Learn JavaScript Visually'}
9
books1 = {1: 'You Dont Know JS', 2: 'Eloquent JavaScript', 3: 'Learn JavaScript Visually'}
2
1
books2 = {4: 'JavaScript and jQuery', 5: 'Simplifying JavaScript'}
2
2
2
books2 = {4: 'JavaScript and jQuery', 5: 'Simplifying JavaScript'}
9
books1 = {1: 'You Dont Know JS', 2: 'Eloquent JavaScript', 3: 'Learn JavaScript Visually'}
08
books1.update(books2)
7
books1.update(books2)
9
books1 = {1: 'You Dont Know JS', 2: 'Eloquent JavaScript', 3: 'Learn JavaScript Visually'}
11
2
1
books1 = {1: 'You Dont Know JS', 2: 'Eloquent JavaScript', 3: 'Learn JavaScript Visually'}
13
2
3
books1 = {1: 'You Dont Know JS', 2: 'Eloquent JavaScript', 3: 'Learn JavaScript Visually'}
15
books1 = {1: 'You Dont Know JS', 2: 'Eloquent JavaScript', 3: 'Learn JavaScript Visually'}
16
books1 = {1: 'You Dont Know JS', 2: 'Eloquent JavaScript', 3: 'Learn JavaScript Visually'}
17
books1 = {1: 'You Dont Know JS', 2: 'Eloquent JavaScript', 3: 'Learn JavaScript Visually'}
18

Output dalam hal ini adalah

________3__1_______20

2
books1 = {1: 'You Dont Know JS', 2: 'Eloquent JavaScript', 3: 'Learn JavaScript Visually'}
22
3
books1 = {1: 'You Dont Know JS', 2: 'Eloquent JavaScript', 3: 'Learn JavaScript Visually'}
24
books1 = {1: 'You Dont Know JS', 2: 'Eloquent JavaScript', 3: 'Learn JavaScript Visually'}
9
books1 = {1: 'You Dont Know JS', 2: 'Eloquent JavaScript', 3: 'Learn JavaScript Visually'}
26
2
1

Jadi, seperti yang bisa Anda lihat dari tip singkat ini, sangat mudah untuk menggabungkan dua kamus menggunakan Python, dan ini menjadi sedikit lebih rumit jika kita ingin mempertahankan nilai dari kunci yang sama di setiap kamus

Posting ini telah diperbarui dengan kontribusi dari Kingsley Ubah. Kingsley bersemangat membuat konten yang mengedukasi dan menginspirasi pembaca. Hobinya antara lain membaca, sepak bola, dan bersepeda

Apakah kamus Python mendukung kunci duplikat?

Kamus dengan Python . Kunci duplikat tidak diperbolehkan . Kamus memetakan setiap kunci ke nilai yang sesuai, jadi tidak masuk akal untuk memetakan kunci tertentu lebih dari satu kali.

Bagaimana Anda menangani kunci duplikat dengan Python?

Kamus Python tidak mengizinkan kunci diulang. Namun, kita dapat menggunakan defaultdict untuk mencari solusi . Kelas ini didefinisikan dalam modul koleksi.

Bagaimana cara menggabungkan kunci duplikat dalam kamus Python?

Bagaimana Menggabungkan Kamus dengan Python? .
1) Menggunakan metode update(). Anda dapat menggabungkan dua kamus dengan python menggunakan metode update(). .
2) Menggunakan gabungan(. ) operator. .
3) Menggunakan operator **. .
4) Membuka kamus kedua. .
5) Menggunakan koleksi. .
6) Menggunakan itertools. .
7) Menggunakan pemahaman kamus. .
8) Tambahkan nilai kunci umum

Bagaimana cara menghapus kunci duplikat dari kamus Python?

Anda dapat menghapus duplikat dari Python menggunakan dict. fromkeys() , yang menghasilkan kamus yang menghapus nilai duplikat.