Python - Salin Kamus

Halo kepada semua yang berhasrat menjadi pemrogram Python! Hari ini, kita akan menyelam ke atas dunia yang menarik tentang penyalinan kamus di Python. Sebagai guru sains komputer yang baik hati di kampung kita, saya sangat gembira untuk menjaga anda melalui perjalanan ini. Mari kita bayangkan kamus sebagai buku resepi penyihir yang kita boleh duplikat. Bunyi macam fun, kan? Mari kita mulakan!

Python - Copy Dictionaries

Salin Kamus

Di Python, kamus adalah struktur data yang sangat berguna untuk menyimpan pasangan kunci-nilai. Tetapi apa jika kita ingin membuat satu salinan dari kamus? Wallah, itulah dimana penyihirannya mula!

Mengapa Salin Kamus?

Sebelum kita lompat ke atas 'bagaimana', mari kita faham 'mengapa'. Bayangkan anda memiliki resepi kue kesukaan anda (itu adalah kamus kita), dan anda ingin untuk berkongsi ia dengan seorang kawan. Anda boleh memberikannya buku resepi asal anda, tetapi apa jika mereka memutuskan untuk menambahkan serbuk lada kepada kue coklat chip? Yikes! Itulah mengapa kita membuat salinan - untuk menjaga asal kita aman sementara membenarkan pengubahsuaian kepada salinan.

Sekarang, mari kita lihat cara yang berbeza untuk menyalin kamus di Python.

Salinan Dangkal

Salinan dangkal membuat kamus baru, tetapi nilai-nilai adalah rujukan kepada nilai-nilai kamus asal. Ia seperti membuat rakaman fotokopi atas isi kandungan buku resepi anda - anda memiliki buku baru, tetapi ia masih menunjuk kepada resepi asal.

Mari kita lihat ini dalam tindakan:

original_dict = {"apple": 1, "banana": 2, "cherry": [3, 4, 5]}
shallow_copy = original_dict.copy()

print("Kamus asal:", original_dict)
print("Salinan dangkal:", shallow_copy)

# Mengubah suai salinan dangkal
shallow_copy["apple"] = 10
shallow_copy["cherry"][0] = 30

print("\nSetelah pengubahsuaian:")
print("Kamus asal:", original_dict)
print("Salinan dangkal:", shallow_copy)

Output:

Kamus asal: {'apple': 1, 'banana': 2, 'cherry': [3, 4, 5]}
Salinan dangkal: {'apple': 1, 'banana': 2, 'cherry': [3, 4, 5]}

Setelah pengubahsuaian:
Kamus asal: {'apple': 1, 'banana': 2, 'cherry': [30, 4, 5]}
Salinan dangkal: {'apple': 10, 'banana': 2, 'cherry': [30, 4, 5]}

Perhatikan bagaimana pengubahsuaian nilai 'apple' hanya menjejaskan salinan dangkal, tetapi pengubahsuaian senarai 'cherry' mengubah kedua-dua kamus. Ini kerana senarai adalah berubah-ubah, dan kedua-dua kamus menunjuk kepada objek senarai yang sama.

Salinan Dalam

Salinan dalam membuat kamus baru dengan salinan baru atas nilai-nilai. Ia seperti menulis ulang keseluruhan buku resepi dengan tangan - semua adalah baru dan bebas.

Untuk membuat salinan dalam, kita perlu mengimport modul copy:

import copy

original_dict = {"apple": 1, "banana": 2, "cherry": [3, 4, 5]}
deep_copy = copy.deepcopy(original_dict)

print("Kamus asal:", original_dict)
print("Salinan dalam:", deep_copy)

# Mengubah suai salinan dalam
deep_copy["apple"] = 10
deep_copy["cherry"][0] = 30

print("\nSetelah pengubahsuaian:")
print("Kamus asal:", original_dict)
print("Salinan dalam:", deep_copy)

Output:

Kamus asal: {'apple': 1, 'banana': 2, 'cherry': [3, 4, 5]}
Salinan dalam: {'apple': 1, 'banana': 2, 'cherry': [3, 4, 5]}

Setelah pengubahsuaian:
Kamus asal: {'apple': 1, 'banana': 2, 'cherry': [3, 4, 5]}
Salinan dalam: {'apple': 10, 'banana': 2, 'cherry': [30, 4, 5]}

Lihat perbezaannya? Dengan salinan dalam, pengubahsuaian senarai 'cherry' di salinan tidak menjejaskan kamus asal.

Salin Kamus Menggunakan Metode copy()

Metode copy() adalah metode kamus terbawa yang membuat salinan dangkal. Ia seperti rakaman fotokopi yang kita maksudkan tadi - cepat dan mudah, tetapi dengan keterbatasan yang sama seperti salinan dangkal.

Berikut cara untuk menggunakannya:

original_dict = {"apple": 1, "banana": 2, "cherry": [3, 4, 5]}
copy_dict = original_dict.copy()

print("Kamus asal:", original_dict)
print("Kamus disalin:", copy_dict)

# Mengubah suai salinan
copy_dict["apple"] = 10
copy_dict["cherry"][0] = 30

print("\nSetelah pengubahsuaian:")
print("Kamus asal:", original_dict)
print("Kamus disalin:", copy_dict)

Output:

Kamus asal: {'apple': 1, 'banana': 2, 'cherry': [3, 4, 5]}
Kamus disalin: {'apple': 1, 'banana': 2, 'cherry': [3, 4, 5]}

Setelah pengubahsuaian:
Kamus asal: {'apple': 1, 'banana': 2, 'cherry': [30, 4, 5]}
Kamus disalin: {'apple': 10, 'banana': 2, 'cherry': [30, 4, 5]}

Seperti yang anda lihat, perilaku adalah sama seperti contoh salinan dangkal pertama kita.

Perbandingan Metode Penyalinan Kamus

Mari kita ringkaskan metode yang berbeza dalam satu tabel yang berguna:

Metode Jenis Salinan Sintaks Objek Berlapis
Penetapan (=) Rujukan new_dict = original_dict Dipakai bersama
copy() Dangkal new_dict = original_dict.copy() Dipakai bersama
dict() Dangkal new_dict = dict(original_dict) Dipakai bersama
deepcopy() Dalam new_dict = copy.deepcopy(original_dict) Bebas

Ingat, pemilihan metode penyalinan yang betul bergantung kepada keperluan anda. Jika anda bekerja dengan kamus yang sederhana, salinan dangkal mungkin cukup. Tetapi jika anda berurusan dengan struktur berlapis dan memerlukan kebebasan penuh, pilih salinan dalam.

Dengan kesimpulan, penyalinan kamus di Python adalah seperti membuat salinan resepi kesukaan anda. Kadang-kadang anda hanya perlu rujukan cepat (salinan dangkal), dan kadang-kadang anda ingin membuat buku resepi baru (salinan dalam). Pilihan itu adalah milik anda, pemrogram Python muda!

Sekarang, mengapa tidak anda cuba metode ini sendiri? Buat kamus "buku resepi" anda sendiri dan eksperimen dengan teknik penyalinan yang berbeza. Happy coding, dan jangan lupa untuk menyalin kamus anda dengan sempurna!

Credits: Image by storyset