Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapa Mengubah Salinan Kamus Python Juga Mengubah Yang Asal?

Mengapa Mengubah Salinan Kamus Python Juga Mengubah Yang Asal?

DDD
DDDasal
2024-12-23 09:04:34438semak imbas

Why Does Modifying a Python Dictionary Copy Also Change the Original?

Memahami Menyalin Kamus dalam Python

Dalam Python, memanipulasi kamus boleh mengelirukan apabila menyalin nilainya. Artikel ini menangani isu biasa yang dihadapi semasa mengubah suai salinan kamus hanya untuk mengetahui bahawa kamus asal juga telah berubah.

Untuk memahami tingkah laku ini, adalah penting untuk memahami bahawa Python tidak melakukan penyalinan objek tersirat. Apabila anda menetapkan dict2 = dict1, anda tidak mencipta objek kamus baharu; anda hanya mencipta rujukan lain kepada kamus sedia ada yang sama. Sebarang perubahan yang dibuat pada dict2 oleh itu akan menjejaskan dict1 secara langsung kerana kedua-duanya merujuk kepada struktur data asas yang sama.

Untuk mengelakkan tingkah laku ini dan benar-benar menyalin kamus, anda mesti mencipta objek kamus baharu secara eksplisit. Dua kaedah boleh mencapai ini:

  • Menggunakan dict(): Pembina dict() mengambil kamus sedia ada sebagai hujahnya dan mengembalikan objek kamus baharu dengan salinan semua nilai kunci berpasangan.

Contoh:

dict2 = dict(dict1)
  • Menggunakan copy(): Kaedah copy() kamus mencipta objek kamus baharu dengan salinan cetek asli.

Contoh:

dict2 = dict1.copy()

Dengan menggunakan teknik ini, anda boleh memastikan bahawa pengubahsuaian yang dibuat kepada dict2 tidak akan menjejaskan dict1 asal, membolehkan anda untuk mengekalkan keadaan kamus asal sambil memanipulasi versi salinannya.

Atas ialah kandungan terperinci Mengapa Mengubah Salinan Kamus Python Juga Mengubah Yang Asal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn