Bisakah kita menggabungkan dua kamus dengan python?

Anda ingin menggabungkan dua atau lebih kamus Python dalam satu ekspresi. Misalnya, Anda memiliki kamus berikut yang menyimpan beberapa data tentang karakter fiksi

c1 = {
    'The Hound of the Baskervilles': 'Sherlock Holmes',
    'To Kill A Mockingbird': 'Scout Finch',
    'Heart of Darkness': 'Kurtz'
}

c2 = {
    'Lord of the Rings': 'Frodo Baggins',
    'The Count of Monte Cristo': 'Edmond Dantès'
}

Bagaimana Anda bisa menggabungkannya menjadi satu kamus dalam satu baris kode?

Solusinya

Bergantung pada versi Python mana yang Anda gunakan, Anda dapat memilih salah satu metode berikut untuk menggabungkan kamus Python

Menggabungkan Kamus Menggunakan | Operator

Piton 3. 9 memperkenalkan di kelas dict. Menggunakan operator gabungan adalah cara termudah untuk menggabungkan kamus. Operator gabungan mengembalikan kamus baru, membiarkan kamus asli tidak berubah

>>> c = c1 | c2
>>> c
{'The Hound of the Baskervilles': 'Sherlock Holmes', 'To Kill A Mockingbird': 'Scout Finch', 'Heart of Darkness': 'Kurtz', 'Lord of the Rings': 'Frodo Baggins', 'The Count of Monte Cristo': 'Edmond Dantès'}
_

Kita bisa mengubah urutan kamus, seperti itu

>>> c = c2 | c1
>>> c
{'Lord of the Rings': 'Frodo Baggins', 'The Count of Monte Cristo': 'Edmond Dantès', 'The Hound of the Baskervilles': 'Sherlock Holmes', 'To Kill A Mockingbird': 'Scout Finch', 'Heart of Darkness': 'Kurtz'}

Kami dapat menggabungkan beberapa kamus sekaligus menggunakan metode ini

Menggabungkan Kamus Menggunakan |= Operator

Jika kita ingin menggabungkan kamus di tempat, kita dapat menggunakan (|=)

>>> c1 |= c2
>>> c1
{'The Hound of the Baskervilles': 'Sherlock Holmes', 'To Kill A Mockingbird': 'Scout Finch', 'Heart of Darkness': 'Kurtz', 'Lord of the Rings': 'Frodo Baggins', 'The Count of Monte Cristo': 'Edmond Dantès'}
>>> c2
{'Lord of the Rings': 'Frodo Baggins', 'The Count of Monte Cristo': 'Edmond Dantès'}

Kami dapat menggabungkan beberapa kamus sekaligus menggunakan metode ini

Seperti operator gabungan, operator pembaruan akan bekerja dengan Python 3. 9 ke atas saja

Menggabungkan Kamus Menggunakan >>> c = c1 | c2 >>> c {'The Hound of the Baskervilles': 'Sherlock Holmes', 'To Kill A Mockingbird': 'Scout Finch', 'Heart of Darkness': 'Kurtz', 'Lord of the Rings': 'Frodo Baggins', 'The Count of Monte Cristo': 'Edmond Dantès'} 1 Operator

Dalam Python 3. 5 ke atas, kita juga dapat menggunakan untuk menggabungkan kamus

>>> c3 = {**c1, **c2}
>>> c3
{'The Hound of the Baskervilles': 'Sherlock Holmes', 'To Kill A Mockingbird': 'Scout Finch', 'Heart of Darkness': 'Kurtz', 'Lord of the Rings': 'Frodo Baggins', 'The Count of Monte Cristo': 'Edmond Dantès'}

Menggunakan operator pembongkaran tidak mengubah kamus asli. Jika Anda ingin menggabungkan kamus di tempat, Anda tidak dapat menggunakan operator unpacking. Kita bisa menggabungkan lebih dari dua kamus sekaligus dengan menggunakan metode ini

Untuk versi Python di bawah 3. 5, kita dapat menggunakan metode

>>> c = c1 | c2
>>> c
{'The Hound of the Baskervilles': 'Sherlock Holmes', 'To Kill A Mockingbird': 'Scout Finch', 'Heart of Darkness': 'Kurtz', 'Lord of the Rings': 'Frodo Baggins', 'The Count of Monte Cristo': 'Edmond Dantès'}
3 dari kelas dict untuk menggabungkan satu kamus ke kamus lainnya

>>> c1.update(c2)
>>> c1
{'The Hound of the Baskervilles': 'Sherlock Holmes', 'To Kill A Mockingbird': 'Scout Finch', 'Heart of Darkness': 'Kurtz', 'Lord of the Rings': 'Frodo Baggins', 'The Count of Monte Cristo': 'Edmond Dantès'}

Dengan menggunakan metode ini, kami hanya dapat menggabungkan kamus di tempat, mis. e. salah satu kamus akan dimodifikasi. Jadi jika kita perlu mempertahankan kamus asli tidak berubah, kita perlu membuat salinan dari salah satu kamus dan kemudian menggabungkan yang kedua ke dalam salinan ini

Python Menggabungkan dua kamus menjadi satu adalah operasi umum di Python saat bekerja dengan kamus. Ada banyak cara untuk mencapai ini, dan dalam artikel ini, kita akan mengeksplorasi beberapa pendekatan tersebut. Misalnya menggunakan metode update(), menggunakan operator unpacking, dan menggunakan pemahaman kamus

Contoh Cepat Menggabungkan Dua Kamus menjadi Satu

Berikut adalah beberapa contoh cepat yang akan memberi Anda ikhtisar tingkat tinggi tentang cara menggabungkan dua kamus menjadi satu kamus dengan Python


# Quick Examples

# Method 1: Use the update() method
dict1.update(dict2)

# Method 2: Use the {**dict1, **dict2} syntax
dict3 = {**dict1, **dict2}

# Method 3: Use the ChainMap class
import collections
chain = collections.ChainMap(dict1, dict2)
_

1. Gunakan update() untuk Menggabungkan Dua Kamus

Metode


# Create two dictionaries
states_1 = {'CA': 'California', 'NY': 'New York'}
states_2 = {'CA': 'California', 'DC': 'Washigton DC'}

# Use update() method to merge dictionaries
states_1.update(states_2)
print(states_1) 

# Output: 
# {'CA': 'California', 'NY': 'New York', 'DC': 'Washigton DC'}
0 memungkinkan Anda memperbarui nilai kamus yang ada dengan nilai kamus lain. Ini adalah salah satu cara termudah dan paling mudah untuk menggabungkan dua kamus dengan Python. Sintaks fungsi update() adalah

# Create two dictionaries
states_1 = {'CA': 'California', 'NY': 'New York'}
states_2 = {'CA': 'California', 'DC': 'Washigton DC'}

# Use update() method to merge dictionaries
states_1.update(states_2)
print(states_1) 

# Output: 
# {'CA': 'California', 'NY': 'New York', 'DC': 'Washigton DC'}
1. Ini adalah metode objek kamus, dan dibutuhkan kamus sebagai argumen. Untuk contoh lebih lanjut tentang dict, lihat Kamus Python dengan contoh


# Create two dictionaries
states_1 = {'CA': 'California', 'NY': 'New York'}
states_2 = {'CA': 'California', 'DC': 'Washigton DC'}

# Use update() method to merge dictionaries
states_1.update(states_2)
print(states_1) 

# Output: 
# {'CA': 'California', 'NY': 'New York', 'DC': 'Washigton DC'}
_

Dalam contoh di atas untuk menggabungkan kamus ini, kami menggunakan metode


# Create two dictionaries
states_1 = {'CA': 'California', 'NY': 'New York'}
states_2 = {'CA': 'California', 'DC': 'Washigton DC'}

# Use update() method to merge dictionaries
states_1.update(states_2)
print(states_1) 

# Output: 
# {'CA': 'California', 'NY': 'New York', 'DC': 'Washigton DC'}
0 pada kamus

# Create two dictionaries
states_1 = {'CA': 'California', 'NY': 'New York'}
states_2 = {'CA': 'California', 'DC': 'Washigton DC'}

# Use update() method to merge dictionaries
states_1.update(states_2)
print(states_1) 

# Output: 
# {'CA': 'California', 'NY': 'New York', 'DC': 'Washigton DC'}
3, meneruskan kamus

# Create two dictionaries
states_1 = {'CA': 'California', 'NY': 'New York'}
states_2 = {'CA': 'California', 'DC': 'Washigton DC'}

# Use update() method to merge dictionaries
states_1.update(states_2)
print(states_1) 

# Output: 
# {'CA': 'California', 'NY': 'New York', 'DC': 'Washigton DC'}
4 sebagai argumen.

2. Menggabungkan Dua Kamus menggunakan Pendekatan Pembongkaran

Sintaks ini dikenal sebagai operator pembongkaran kamus dan memungkinkan Anda untuk menggabungkan dua kamus dengan "membongkar" mereka ke dalam kamus baru. Ini memungkinkan Anda untuk "membongkar" pasangan nilai kunci dari kamus dan menetapkannya ke variabel


# Use unpacking
merged_states={**states_1, **states_2}
# Print resulting dictionary
print(merged_states) 

# Output: 
# {'CA': 'California', 'NY': 'New York', 'DC': 'Washigton DC'}

3. Menggabungkan Kamus Menggunakan Pemahaman

Pemahaman kamus adalah cara ringkas untuk membuat daftar dengan mengulangi iterable, seperti kamus. jadi Anda juga dapat menggabungkan beberapa kamus dengan Python dengan menggunakan pemahaman kamus


# Use comprehension
merged_states= {k: v for d in (states_1, states_2) for k, v in d.items()}
print(merged_states) 

# Output: 
# {'CA': 'California', 'NY': 'New York', 'DC': 'Washigton DC'}

4. Tangani Konflik saat Menggabungkan Kamus

Saat menggabungkan kamus dengan Python, Anda mungkin mengalami konflik kunci jika dua atau lebih kamus berisi kunci dengan nama yang sama. Dalam hal ini, Anda perlu memutuskan cara menangani konflik dan menentukan nilai mana yang akan digunakan untuk kunci tersebut

Berikut adalah 4 kasus berbeda di mana Anda dapat menghadapi konflik. Masing-masing memiliki solusinya sendiri

4. 1 Gunakan nilai kamus pertama

Jika Anda ingin menggunakan nilai dari kamus pertama jika terjadi konflik kunci, Anda dapat menggunakan metode update() untuk menggabungkan kamus. Metode update() akan menimpa nilai kunci di kamus pertama dengan nilai dari kamus kedua

Pastikan untuk menyebutnya dalam urutan yang benar. Jika Anda ingin memiliki nilai dict pertama maka Anda harus memanggil fungsi


# Create two dictionaries
states_1 = {'CA': 'California', 'NY': 'New York'}
states_2 = {'CA': 'California', 'DC': 'Washigton DC'}

# Use update() method to merge dictionaries
states_1.update(states_2)
print(states_1) 

# Output: 
# {'CA': 'California', 'NY': 'New York', 'DC': 'Washigton DC'}
0 pada yang kedua


# Get value of first dict
states_2.update(states_1)
print(states_2)

4. 2 Gunakan nilai kamus kedua

Dalam hal ini, kita dapat menggunakan fungsi update yang sama dengan urutan terbalik atau kita dapat menggunakan metode unpacking. Demi topik ini kita akan menggunakan metode unpacking untuk menggunakan nilai dict kedua saat penggabungan


# Get value of second dict
merged_stats = {**states_1, **states_2}
print(states_2)

4. 3 Gunakan fungsi kustom untuk menentukan nilai

Ini memungkinkan Anda menentukan logika Anda sendiri untuk menangani konflik utama. Jika Anda ingin menggunakan fungsi khusus untuk menentukan nilai jika terjadi konflik kunci, Anda dapat menggunakan perulangan for untuk mengulangi kamus dan menerapkan fungsi tersebut ke setiap pasangan nilai kunci


# Use a for loop and a custom function to merge dictionaries
def merge_dicts(dict1, dict2):
  result = {}
  for d in (dict1, dict2):
    for k, v in d.items():
      if k in result:
        result[k] = custom_function(result[k], v)
      else:
        result[k] = v
  return result

def custom_function(v1, v2):
  # Add your own logic here to determine the value
  return v1 + ' ' + v2

dict3 = merge_dicts(states_1, states_2)
print(dict3)  
# {'CA': 'California California', 'NY': 'New York', 'DC': 'Washigton DC'}

4. 4 Munculkan pengecualian saat menggabungkan kamus

Metode ini berguna jika Anda ingin memastikan bahwa kamus yang Anda gabungkan tidak mengandung konflik utama. Jika Anda ingin memunculkan pengecualian jika terjadi konflik kunci, Anda dapat menggunakan blok coba-kecuali untuk menangkap pengecualian dan menanganinya


# Use a try-except block to handle key conflicts
try:
  dict3 = {**dict1, **dict2}
except KeyError as e:
  print(f'Key conflict: {e}')

5. Gunakan Modul Koleksi untuk Menggabungkan Beberapa Kamus

Ini bisa berguna saat Anda ingin menggabungkan beberapa kamus dengan Python dan membuatnya didahulukan dalam urutan tertentu. Kelas


# Create two dictionaries
states_1 = {'CA': 'California', 'NY': 'New York'}
states_2 = {'CA': 'California', 'DC': 'Washigton DC'}

# Use update() method to merge dictionaries
states_1.update(states_2)
print(states_1) 

# Output: 
# {'CA': 'California', 'NY': 'New York', 'DC': 'Washigton DC'}
6 dari modul

# Create two dictionaries
states_1 = {'CA': 'California', 'NY': 'New York'}
states_2 = {'CA': 'California', 'DC': 'Washigton DC'}

# Use update() method to merge dictionaries
states_1.update(states_2)
print(states_1) 

# Output: 
# {'CA': 'California', 'NY': 'New York', 'DC': 'Washigton DC'}
7 memungkinkan Anda membuat satu tampilan dari beberapa kamus

Berperilaku seperti kamus biasa, tetapi secara internal memelihara daftar kamus dan mencarinya dalam urutan yang ditambahkan saat mencari kunci


from collections import ChainMap

dict3 = {'Ruby': 'OO', 'Perl': 'LL'}

# Create a ChainMap using the dictionaries
merged_dict = ChainMap(dict1, dict2, dict3)

6. Menggabungkan Kamus menggunakan for Loop

Saat menggunakan perulangan for untuk menggabungkan kamus, Anda dapat mengulangi kamus dan menambahkan pasangan nilai kunci ke kamus baru, memungkinkan Anda menggabungkan beberapa kamus ke dalam satu kamus. Ini memungkinkan Anda untuk mengulang kamus dan menambahkan pasangan kunci-nilai ke kamus baru dalam satu lingkaran


# Initialize an empty dictionary 
merged_dict = {}

# Iterate over the dictionaries
for d in (dict1, dict2):
  for k, v in d.items():
    merged_dict[k] = v

print(merged_dict)  
# {'Python': 'HL', 'C++': 'LL', 'Java': 'OO', 'C#': 'OO'}

7. Ringkasan dan Kesimpulan

Pada artikel ini, kami membahas berbagai teknik untuk menggabungkan kamus dengan Python. Kami belajar bagaimana menggunakan metode


# Create two dictionaries
states_1 = {'CA': 'California', 'NY': 'New York'}
states_2 = {'CA': 'California', 'DC': 'Washigton DC'}

# Use update() method to merge dictionaries
states_1.update(states_2)
print(states_1) 

# Output: 
# {'CA': 'California', 'NY': 'New York', 'DC': 'Washigton DC'}
0 bawaan dan sintaks

# Create two dictionaries
states_1 = {'CA': 'California', 'NY': 'New York'}
states_2 = {'CA': 'California', 'DC': 'Washigton DC'}

# Use update() method to merge dictionaries
states_1.update(states_2)
print(states_1) 

# Output: 
# {'CA': 'California', 'NY': 'New York', 'DC': 'Washigton DC'}
9 yang ringkas untuk menggabungkan dua kamus. Jika Anda memiliki pertanyaan atau komentar lebih lanjut, jangan ragu untuk meninggalkannya di bagian komentar di bawah

Bagaimana cara menggabungkan dua kamus dengan Python?

Cara termudah untuk menggabungkan dua kamus dengan python adalah dengan menggunakan operator unpacking(**) . Dengan menerapkan operator "**" ke kamus, itu memperluas kontennya menjadi kumpulan pasangan nilai kunci.

Bagaimana cara menambahkan satu kamus ke kamus lain dengan Python?

Menambahkan Kamus Menggunakan Metode update() . Metode update() menimpa nilai kunci yang ada dengan nilai baru.

Bagaimana Anda menggabungkan dua nilai kamus untuk kunci umum di Python?

Menggunakan Penghitung . Dan pada gilirannya menambahkan nilai pada kunci yang cocok.