Hướng dẫn how do i copy a dictionary in python? - làm cách nào để sao chép từ điển trong python?

Trong hướng dẫn này, chúng tôi sẽ tìm hiểu về phương thức Python Dictionary Copy () với sự trợ giúp của các ví dụ.

Họ

Orignal:  {1: 'one', 2: 'two'}
New:  {1: 'one', 2: 'two'}
8 Phương thức trả về một bản sao (bản sao nông) của từ điển.

Thí dụ

original_marks = {'Physics':67, 'Maths':87}

copied_marks = original_marks.copy()

print('Original Marks:', original_marks) print('Copied Marks:', copied_marks) # Output: Original Marks: {'Physics': 67, 'Maths': 87} # Copied Marks: {'Physics': 67, 'Maths': 87}


Cú pháp của bản sao từ điển ()

Cú pháp của

Orignal:  {1: 'one', 2: 'two'}
New:  {1: 'one', 2: 'two'}
8 là:

dict.copy()

sao chép () đối số

Phương pháp

Orignal:  {1: 'one', 2: 'two'}
New:  {1: 'one', 2: 'two'}
8 không lấy bất kỳ đối số nào.


sao chép () giá trị trả về

Phương pháp này trả về một bản sao nông của từ điển. Nó không sửa đổi từ điển ban đầu.


Ví dụ 1: Sao chép hoạt động như thế nào cho từ điển?

original = {1:'one', 2:'two'}

new = original.copy()

print('Orignal: ', original) print('New: ', new)

Đầu ra

Orignal:  {1: 'one', 2: 'two'}
New:  {1: 'one', 2: 'two'}

Phương thức bản sao từ điển () Phương thức vs = toán tử

Khi phương thức

Orignal:  {1: 'one', 2: 'two'}
New:  {1: 'one', 2: 'two'}
8 được sử dụng, một từ điển mới được tạo ra chứa đầy một bản sao của các tài liệu tham khảo từ từ điển gốc.

Khi toán tử

original = {1:'one', 2:'two'}

new = original

# removing all elements from the list new.clear() print('new: ', new) print('original: ', original)
2 được sử dụng, một tham chiếu mới về từ điển ban đầu được tạo.


Ví dụ 2: Sử dụng = toán tử để sao chép từ điển

original = {1:'one', 2:'two'}

new = original

# removing all elements from the list new.clear() print('new: ', new) print('original: ', original)

Đầu ra

new:  {}
original:  {}

Phương thức bản sao từ điển () Phương thức vs = toán tử


Khi phương thức Orignal: {1: 'one', 2: 'two'} New: {1: 'one', 2: 'two'}8 được sử dụng, một từ điển mới được tạo ra chứa đầy một bản sao của các tài liệu tham khảo từ từ điển gốc.

original = {1:'one', 2:'two'}

new = original.copy()

# removing all elements from the list new.clear() print('new: ', new) print('original: ', original)

Đầu ra

new:  {}
original:  {1: 'one', 2: 'two'}

Phương thức bản sao từ điển () Phương thức vs = toán tử

Python không bao giờ ngầm sao chép các đối tượng. Khi bạn đặt

original = {1:'one', 2:'two'}

new = original

# removing all elements from the list new.clear() print('new: ', new) print('original: ', original)
3, bạn đang làm cho chúng đề cập đến cùng một đối tượng Dict chính xác, vì vậy khi bạn đột biến nó, tất cả các tham chiếu đến nó tiếp tục đề cập đến đối tượng trong trạng thái hiện tại của nó.

Nếu bạn muốn sao chép Dict (rất hiếm), bạn phải làm điều đó một cách rõ ràng với

dict2 = dict(dict1)

hoặc

dict2 = dict1.copy()

Đã trả lời ngày 17 tháng 3 năm 2010 lúc 21:09Mar 17, 2010 at 21:09

Hướng dẫn how do i copy a dictionary in python? - làm cách nào để sao chép từ điển trong python?

Mike Grahammike GrahamMike Graham

71.4K14 Huy hiệu vàng98 Huy hiệu bạc129 Huy hiệu đồng14 gold badges98 silver badges129 bronze badges

32

Khi bạn gán

original = {1:'one', 2:'two'}

new = original

# removing all elements from the list new.clear() print('new: ', new) print('original: ', original)
3, bạn sẽ không tạo một bản sao của
original = {1:'one', 2:'two'}

new = original

# removing all elements from the list new.clear() print('new: ', new) print('original: ', original)
5, nó sẽ dẫn đến
original = {1:'one', 2:'two'}

new = original

# removing all elements from the list new.clear() print('new: ', new) print('original: ', original)
6 chỉ là một tên khác cho
original = {1:'one', 2:'two'}

new = original

# removing all elements from the list new.clear() print('new: ', new) print('original: ', original)
5.

Để sao chép các loại có thể thay đổi như từ điển, hãy sử dụng

original = {1:'one', 2:'two'}

new = original

# removing all elements from the list new.clear() print('new: ', new) print('original: ', original)
8 /
original = {1:'one', 2:'two'}

new = original

# removing all elements from the list new.clear() print('new: ', new) print('original: ', original)
9 của mô -đun
original = {1:'one', 2:'two'}

new = original

# removing all elements from the list new.clear() print('new: ', new) print('original: ', original)
8.

dict.copy()
0

Đã trả lời ngày 17 tháng 3 năm 2010 lúc 21:11Mar 17, 2010 at 21:11

Hướng dẫn how do i copy a dictionary in python? - làm cách nào để sao chép từ điển trong python?

8

Trong khi

new:  {}
original:  {}
1 và
new:  {}
original:  {}
2 tạo ra một bản sao, chúng chỉ là các bản sao nông. Nếu bạn muốn một bản sao sâu,
new:  {}
original:  {}
3 là bắt buộc. Một ví dụ:

dict.copy()
1

Liên quan đến các bản sao sâu so với các bản sao sâu, từ các tài liệu mô -đun Python

original = {1:'one', 2:'two'}

new = original

# removing all elements from the list new.clear() print('new: ', new) print('original: ', original)
8:

Sự khác biệt giữa sao chép nông và sâu chỉ có liên quan đến các đối tượng hỗn hợp (các đối tượng có chứa các đối tượng khác, như danh sách hoặc trường hợp lớp):

  • Một bản sao nông xây dựng một đối tượng hợp chất mới và sau đó (trong phạm vi có thể) chèn các tham chiếu vào nó vào các đối tượng được tìm thấy trong bản gốc.
  • Một bản sao sâu xây dựng một đối tượng hợp chất mới và sau đó, đệ quy, chèn các bản sao vào nó của các đối tượng được tìm thấy trong bản gốc.

Alukach

5.1823 Huy hiệu vàng37 Huy hiệu bạc38 Huy hiệu Đồng3 gold badges37 silver badges38 bronze badges

Đã trả lời ngày 12 tháng 3 năm 2014 lúc 3:23Mar 12, 2014 at 3:23

gpandagpandagpanda

3.0221 Huy hiệu vàng13 Huy hiệu bạc12 Huy hiệu đồng1 gold badge13 silver badges12 bronze badges

4

Về chiều sâu và một cách dễ nhớ:

Bất cứ khi nào bạn làm Dict2 = Dict1, Dict2 đề cập đến Dict1. Cả Dict1 và Dict2 đều chỉ vào cùng một vị trí trong bộ nhớ. Đây chỉ là một trường hợp bình thường trong khi làm việc với các đối tượng có thể thay đổi trong Python. Khi bạn đang làm việc với các đối tượng có thể thay đổi trong Python, bạn phải cẩn thận vì khó gỡ lỗi.

Thay vì sử dụng dict2 = dict1, bạn nên sử dụng bản sao (bản sao nông) và phương thức DeepCopy từ mô -đun bản sao của Python để tách Dict2 khỏi Dict1.copy(shallow copy) and deepcopy method from python's copy module to separate dict2 from dict1.

Cách chính xác là:

dict.copy()
2

Như bạn có thể thấy ID của cả Dict1 và Dict2 là khác nhau, điều đó có nghĩa là cả hai đều đang chỉ/tham chiếu đến các vị trí khác nhau trong bộ nhớ.id of both dict1 and dict2 are different, which means both are pointing/referencing to different locations in the memory.

Giải pháp này hoạt động cho các từ điển với các giá trị bất biến, đây không phải là giải pháp chính xác cho những người có giá trị đột biến.

Eg:

dict.copy()
3

Bạn có thể thấy rằng mặc dù chúng tôi đã áp dụng bản sao cho dict1, giá trị của đột biến được thay đổi thành sai trên cả dict2 và dict1 mặc dù chúng tôi chỉ thay đổi nó trên dict2. Điều này là do chúng tôi đã thay đổi giá trị của một phần dict có thể thay đổi của dict1. Khi chúng tôi áp dụng một bản sao trên Dict, nó sẽ chỉ thực hiện một bản sao nông, điều đó có nghĩa là nó sao chép tất cả các giá trị bất biến thành một dict mới và không sao chép các giá trị có thể thay đổi nhưng nó sẽ tham chiếu chúng.

Giải pháp cuối cùng là thực hiện một sự sâu sắc của dict1 để tạo ra hoàn toàn một tài sản mới với tất cả các giá trị được sao chép, bao gồm các giá trị có thể thay đổi.

dict.copy()
4

Như bạn có thể thấy, ID là khác nhau, điều đó có nghĩa là Dict2 hoàn toàn là một độc lực mới với tất cả các giá trị trong Dict1.

DeepCopy cần được sử dụng nếu bất cứ khi nào bạn muốn thay đổi bất kỳ giá trị có thể thay đổi nào mà không ảnh hưởng đến dict ban đầu. Nếu không bạn có thể sử dụng bản sao nông. DeepCopy chậm vì nó hoạt động đệ quy để sao chép bất kỳ giá trị lồng nào trong Dict ban đầu và cũng có thêm bộ nhớ.

Đã trả lời ngày 31 tháng 7 năm 2017 lúc 13:26Jul 31, 2017 at 13:26

VkreddyvkreddyVkreddy

1.53815 huy hiệu bạc13 huy hiệu đồng15 silver badges13 bronze badges

Trên Python 3.5+, có một cách dễ dàng hơn để đạt được một bản sao nông bằng cách sử dụng toán tử ** giải nén. Được xác định bởi PEP 448.

dict.copy()
5

** Giải nén từ điển vào một từ điển mới sau đó được gán cho Dict2.

Chúng tôi cũng có thể xác nhận rằng mỗi từ điển có ID riêng biệt.

dict.copy()
6

Nếu cần một bản sao sâu thì hãy sao chép.DeepCopy () vẫn là con đường để đi.

Đã trả lời ngày 12 tháng 9 năm 2017 lúc 15:39Sep 12, 2017 at 15:39

Hướng dẫn how do i copy a dictionary in python? - làm cách nào để sao chép từ điển trong python?

PABTORREPABTORREPabTorre

2.73920 Huy hiệu bạc 30 Huy hiệu Đồng20 silver badges30 bronze badges

7

Những cách tốt nhất và dễ nhất để tạo một bản sao của một dict trong cả Python 2.7 và 3 là ...dict in both Python 2.7 and 3 are...

Để tạo một bản sao của Từ điển đơn giản (cấp độ đơn):

1. Sử dụng phương thức Dict (), thay vì tạo một tham chiếu trỏ đến Dict hiện có. Using dict() method, instead of generating a reference that points to the existing dict.

dict.copy()
7

2. Sử dụng phương thức Cập nhật () của từ điển Python tích hợp. Using the built-in update() method of python dictionary.

dict.copy()
8

Để tạo một bản sao từ điển lồng nhau hoặc phức tạp:

Sử dụng mô-đun sao chép tích hợp, cung cấp các hoạt động sao chép nông và sâu. Mô -đun này có mặt trong cả Python 2.7 và 3.*copy module, which provides a generic shallow and deep copy operations. This module is present in both Python 2.7 and 3.*

dict.copy()
9

Đã trả lời ngày 21 tháng 5 năm 2018 lúc 10:14May 21, 2018 at 10:14

Hướng dẫn how do i copy a dictionary in python? - làm cách nào để sao chép từ điển trong python?

Akay Niralaakay NiralaAkay Nirala

1.1067 Huy hiệu bạc13 Huy hiệu Đồng7 silver badges13 bronze badges

2

Bạn cũng có thể làm một từ điển mới với sự hiểu biết từ điển. Điều này tránh nhập bản sao.

original = {1:'one', 2:'two'}

new = original.copy()

print('Orignal: ', original) print('New: ', new)
0

Tất nhiên trong Python> = 2.7 Bạn có thể làm:

original = {1:'one', 2:'two'}

new = original.copy()

print('Orignal: ', original) print('New: ', new)
1

Nhưng đối với compat ngược., Phương pháp hàng đầu là tốt hơn.

Đã trả lời ngày 6 tháng 3 năm 2014 lúc 3:28Mar 6, 2014 at 3:28

4

Ngoài các giải pháp được cung cấp khác, bạn có thể sử dụng

new:  {}
original:  {}
5 để tích hợp từ điển vào một từ điển trống, ví dụ:

new:  {}
original:  {}
6..

Bây giờ bạn sẽ có một bản sao "nông" của

new:  {}
original:  {}
7.

Áp dụng cho ví dụ của bạn:

original = {1:'one', 2:'two'}

new = original.copy()

print('Orignal: ', original) print('New: ', new)
2

Con trỏ: Sự khác biệt giữa các copys nông và sâu

Đã trả lời ngày 21 tháng 11 năm 2018 lúc 13:46Nov 21, 2018 at 13:46

d4rtyd4rtyd4rty

3.7605 Huy hiệu vàng29 Huy hiệu bạc68 Huy hiệu Đồng5 gold badges29 silver badges68 bronze badges

2

Các câu lệnh gán trong Python không sao chép các đối tượng, chúng tạo ra các ràng buộc giữa mục tiêu và đối tượng.

Vì vậy,

original = {1:'one', 2:'two'}

new = original

# removing all elements from the list new.clear() print('new: ', new) print('original: ', original)
3, nó dẫn đến một ràng buộc khác giữa
original = {1:'one', 2:'two'}

new = original

# removing all elements from the list new.clear() print('new: ', new) print('original: ', original)
6 và đối tượng mà
original = {1:'one', 2:'two'}

new = original

# removing all elements from the list new.clear() print('new: ', new) print('original: ', original)
5 đề cập đến.

Nếu bạn muốn sao chép một dict, bạn có thể sử dụng

original = {1:'one', 2:'two'}

new = original.copy()

# removing all elements from the list new.clear() print('new: ', new) print('original: ', original)
1. Mô -đun sao chép có hai giao diện:

original = {1:'one', 2:'two'}

new = original.copy()

print('Orignal: ', original) print('New: ', new)
3

Sự khác biệt giữa sao chép nông và sâu chỉ có liên quan đến các đối tượng hỗn hợp (các đối tượng có chứa các đối tượng khác, như danh sách hoặc trường hợp lớp):

Một bản sao nông xây dựng một đối tượng hợp chất mới và sau đó (trong phạm vi có thể) chèn các tham chiếu vào nó vào các đối tượng được tìm thấy trong bản gốc.shallow copy constructs a new compound object and then (to the extent possible) inserts references into it to the objects found in the original.

Một bản sao sâu xây dựng một đối tượng hợp chất mới và sau đó, đệ quy, chèn các bản sao vào nó của các đối tượng được tìm thấy trong bản gốc.deep copy constructs a new compound object and then, recursively, inserts copies into it of the objects found in the original.

Ví dụ, trong Python 2.7.9:

original = {1:'one', 2:'two'}

new = original.copy()

print('Orignal: ', original) print('New: ', new)
4

và kết quả là:

original = {1:'one', 2:'two'}

new = original.copy()

print('Orignal: ', original) print('New: ', new)
5

Đã trả lời ngày 10 tháng 12 năm 2016 lúc 12:25Dec 10, 2016 at 12:25

nới lỏngloosen

3112 Huy hiệu bạc4 Huy hiệu đồng2 silver badges4 bronze badges

Bạn có thể sao chép và chỉnh sửa bản sao mới được xây dựng trong một lần bằng cách gọi hàm xây dựng

original = {1:'one', 2:'two'}

new = original.copy()

# removing all elements from the list new.clear() print('new: ', new) print('original: ', original)
2 với các đối số từ khóa bổ sung:

original = {1:'one', 2:'two'}

new = original.copy()

print('Orignal: ', original) print('New: ', new)
6

Đã trả lời ngày 25 tháng 10 năm 2016 lúc 12:41Oct 25, 2016 at 12:41

Frerich Raabefrerich RaabeFrerich Raabe

88.2K18 Huy hiệu vàng112 Huy hiệu bạc206 Huy hiệu đồng18 gold badges112 silver badges206 bronze badges

1

Điều này cũng làm tôi bối rối, ban đầu, bởi vì tôi đến từ một nền C.

Trong C, một biến là một vị trí trong bộ nhớ có loại được xác định. Gán cho một biến sao chép dữ liệu vào vị trí bộ nhớ của biến.

Nhưng trong Python, các biến hoạt động giống như con trỏ đến các đối tượng. Vì vậy, việc gán một biến cho một biến khác không tạo một bản sao, nó chỉ làm cho tên biến đó trỏ đến cùng một đối tượng.

Đã trả lời ngày 18 tháng 3 năm 2010 lúc 0:39Mar 18, 2010 at 0:39

Craig McQueencraig McQueenCraig McQueen

40.5K28 Huy hiệu vàng122 Huy hiệu bạc178 Huy hiệu đồng28 gold badges122 silver badges178 bronze badges

3

original = {1:'one', 2:'two'}

new = original

# removing all elements from the list new.clear() print('new: ', new) print('original: ', original)
5 là một biểu tượng tham chiếu một đối tượng từ điển cơ bản. Gán
original = {1:'one', 2:'two'}

new = original

# removing all elements from the list new.clear() print('new: ', new) print('original: ', original)
5 cho
original = {1:'one', 2:'two'}

new = original

# removing all elements from the list new.clear() print('new: ', new) print('original: ', original)
6 chỉ gán cùng một tham chiếu. Thay đổi giá trị của khóa thông qua ký hiệu
original = {1:'one', 2:'two'}

new = original

# removing all elements from the list new.clear() print('new: ', new) print('original: ', original)
6 thay đổi đối tượng cơ bản, cũng ảnh hưởng đến
original = {1:'one', 2:'two'}

new = original

# removing all elements from the list new.clear() print('new: ', new) print('original: ', original)
5. Điều này thật khó hiểu.

Lý do dễ dàng hơn nhiều về các giá trị bất biến so với các tài liệu tham khảo, vì vậy hãy tạo bản sao bất cứ khi nào có thể:

original = {1:'one', 2:'two'}

new = original.copy()

print('Orignal: ', original) print('New: ', new)
7

Điều này là về mặt cú pháp giống như:

original = {1:'one', 2:'two'}

new = original.copy()

print('Orignal: ', original) print('New: ', new)
8

Đã trả lời ngày 23 tháng 12 năm 2016 lúc 16:58Dec 23, 2016 at 16:58

Hướng dẫn how do i copy a dictionary in python? - làm cách nào để sao chép từ điển trong python?

Petrus Theronpetrus TheronPetrus Theron

27K35 Huy hiệu vàng147 Huy hiệu bạc279 Huy hiệu đồng35 gold badges147 silver badges279 bronze badges

Mỗi biến trong Python (những thứ như

original = {1:'one', 2:'two'}

new = original

# removing all elements from the list new.clear() print('new: ', new) print('original: ', original)
5 hoặc
original = {1:'one', 2:'two'}

new = original.copy()

# removing all elements from the list new.clear() print('new: ', new) print('original: ', original)
9 hoặc
new:  {}
original:  {1: 'one', 2: 'two'}
0 là một con trỏ của một số "đối tượng" ở một số "đối tượng" ẩn bên trong máy.

Nếu bạn đặt ____ 71, bạn chỉ cần trỏ

original = {1:'one', 2:'two'}

new = original

# removing all elements from the list new.clear() print('new: ', new) print('original: ', original)
5 vào cùng một đối tượng (hoặc vị trí bộ nhớ hoặc bất kỳ tương tự nào bạn thích) là
original = {1:'one', 2:'two'}

new = original

# removing all elements from the list new.clear() print('new: ', new) print('original: ', original)
6. Bây giờ, đối tượng được tham chiếu bởi
original = {1:'one', 2:'two'}

new = original

# removing all elements from the list new.clear() print('new: ', new) print('original: ', original)
5 là cùng một đối tượng được tham chiếu bởi
original = {1:'one', 2:'two'}

new = original

# removing all elements from the list new.clear() print('new: ', new) print('original: ', original)
6.

Bạn có thể kiểm tra:

new:  {}
original:  {1: 'one', 2: 'two'}
6 phải là
new:  {}
original:  {1: 'one', 2: 'two'}
7. Ngoài ra,
new:  {}
original:  {1: 'one', 2: 'two'}
8 phải giống như
new:  {}
original:  {1: 'one', 2: 'two'}
9.

Bạn muốn

dict2 = dict(dict1)
0 hoặc
dict2 = dict(dict1)
1.

Sự khác biệt giữa

original = {1:'one', 2:'two'}

new = original

# removing all elements from the list new.clear() print('new: ', new) print('original: ', original)
8 và
original = {1:'one', 2:'two'}

new = original

# removing all elements from the list new.clear() print('new: ', new) print('original: ', original)
9?
original = {1:'one', 2:'two'}

new = original

# removing all elements from the list new.clear() print('new: ', new) print('original: ', original)
9 sẽ đảm bảo rằng các yếu tố của
original = {1:'one', 2:'two'}

new = original

# removing all elements from the list new.clear() print('new: ', new) print('original: ', original)
6 (bạn đã chỉ nó vào danh sách?) Cũng là bản sao.

Tôi không sử dụng

original = {1:'one', 2:'two'}

new = original

# removing all elements from the list new.clear() print('new: ', new) print('original: ', original)
9 nhiều - thường là thực hành kém để viết mã cần nó (theo ý kiến ​​của tôi).

Đã trả lời ngày 17 tháng 3 năm 2010 lúc 23:57Mar 17, 2010 at 23:57

Wistywistywisty

6,9071 Huy hiệu vàng29 Huy hiệu bạc29 Huy hiệu đồng1 gold badge29 silver badges29 bronze badges

1

original = {1:'one', 2:'two'}

new = original

# removing all elements from the list new.clear() print('new: ', new) print('original: ', original)
3 không sao chép từ điển. Nó chỉ đơn giản là cung cấp cho bạn lập trình một cách thứ hai (
original = {1:'one', 2:'two'}

new = original

# removing all elements from the list new.clear() print('new: ', new) print('original: ', original)
6) để đề cập đến cùng một từ điển.

Đã trả lời ngày 17 tháng 3 năm 2010 lúc 21:09Mar 17, 2010 at 21:09

original = {1:'one', 2:'two'}

new = original.copy()

print('Orignal: ', original) print('New: ', new)
9

Có nhiều cách để sao chép đối tượng Dict, tôi chỉ sử dụng

Orignal:  {1: 'one', 2: 'two'}
New:  {1: 'one', 2: 'two'}
0

Đã trả lời ngày 30 tháng 9 năm 2018 lúc 14:59Sep 30, 2018 at 14:59

Hướng dẫn how do i copy a dictionary in python? - làm cách nào để sao chép từ điển trong python?

imcaoziimcaoziimcaozi

1071 Huy hiệu bạc2 Huy hiệu đồng1 silver badge2 bronze badges

2

Mã sau đây, trên Dicts, sau cú pháp JSON nhanh hơn 3 lần so với DeepCopy

Orignal:  {1: 'one', 2: 'two'}
New:  {1: 'one', 2: 'two'}
1

xaxxon

Phim huy hiệu vàng 18,8K44 gold badges49 silver badges80 bronze badges

Đã trả lời ngày 29 tháng 7 năm 2019 lúc 12:45Jul 29, 2019 at 12:45

Hướng dẫn how do i copy a dictionary in python? - làm cách nào để sao chép từ điển trong python?

Đối với từ điển lồng nhau không sử dụng

dict2 = dict(dict1)
9 vì nếu bạn thay đổi cấp độ thứ hai và nhiều hơn nữa, nó cũng sẽ sửa đổi từ điển nguồn

Orignal:  {1: 'one', 2: 'two'}
New:  {1: 'one', 2: 'two'}
2

Một tùy chọn khác cho DeepCopy là sử dụng thủ thuật

dict2 = dict1.copy()
0 như JavaScript
dict2 = dict1.copy()
1

Orignal:  {1: 'one', 2: 'two'}
New:  {1: 'one', 2: 'two'}
3

Đã trả lời ngày 11 tháng 8 lúc 3:41Aug 11 at 3:41

Hướng dẫn how do i copy a dictionary in python? - làm cách nào để sao chép từ điển trong python?

UingTeaUingTeauingtea

5.4382 Huy hiệu vàng20 Huy hiệu bạc37 Huy hiệu đồng2 gold badges20 silver badges37 bronze badges

Như những người khác đã giải thích,

original = {1:'one', 2:'two'}

new = original.copy()

# removing all elements from the list new.clear() print('new: ', new) print('original: ', original)
2 tích hợp không làm những gì bạn muốn. Nhưng trong Python2 (và có lẽ 3 cũng vậy), bạn có thể dễ dàng tạo một lớp
dict2 = dict1.copy()
3 sao chép với
original = {1:'one', 2:'two'}

new = original

# removing all elements from the list new.clear() print('new: ', new) print('original: ', original)
2 để bạn có thể chắc chắn rằng bản gốc sẽ không thay đổi.

Orignal:  {1: 'one', 2: 'two'}
New:  {1: 'one', 2: 'two'}
4

Vui lòng tham khảo mẫu sửa đổi Lvalue được thảo luận ở đây: Python 2.7 - Cú pháp sạch để sửa đổi Lvalue. Quan sát chính là

original = {1:'one', 2:'two'}

new = original.copy()

# removing all elements from the list new.clear() print('new: ', new) print('original: ', original)
9 và
dict2 = dict1.copy()
6 hoạt động như các giá trị trong Python (mặc dù chúng thực sự là các đối tượng bất biến dưới mui xe). Trong khi bạn đang quan sát điều đó, xin vui lòng quan sát rằng không có gì đặc biệt kỳ diệu về
original = {1:'one', 2:'two'}

new = original.copy()

# removing all elements from the list new.clear() print('new: ', new) print('original: ', original)
9 hoặc
dict2 = dict1.copy()
6.
original = {1:'one', 2:'two'}

new = original.copy()

# removing all elements from the list new.clear() print('new: ', new) print('original: ', original)
2 có thể được sử dụng theo nhiều cách tương tự và tôi có thể nghĩ về nhiều trường hợp
dict2 = dict1.copy()
3 có ý nghĩa.

Đã trả lời ngày 16 tháng 9 năm 2017 lúc 23:09Sep 16, 2017 at 23:09

personal_cloudpersonal_cloudpersonal_cloud

3.6703 Huy hiệu vàng25 Huy hiệu bạc32 Huy hiệu Đồng3 gold badges25 silver badges32 bronze badges

Tôi đã gặp một hành vi đặc biệt khi cố gắng sao chép sâu thuộc tính từ điển của lớp w/o gán nó cho biến

dict.copy()
01 không hoạt động, tức là sửa đổi
dict.copy()
02 sửa đổi
dict.copy()
03

Nhưng nếu bạn làm

dict.copy()
04 và sau đó
dict.copy()
05, nó hoạt động hoàn hảo, tức là sửa đổi
dict.copy()
02 không ảnh hưởng đến
dict.copy()
03

Tôi không chắc tại sao điều này xảy ra, nhưng hy vọng nó sẽ giúp tiết kiệm một số giờ! :)

Đã trả lời ngày 24 tháng 11 năm 2019 lúc 4:52Nov 24, 2019 at 4:52

Hướng dẫn how do i copy a dictionary in python? - làm cách nào để sao chép từ điển trong python?

AnushkanushkAnushk

4624 Huy hiệu bạc20 Huy hiệu Đồng4 silver badges20 bronze badges

2

Sao chép bằng cách sử dụng một vòng lặp cho:

Orignal:  {1: 'one', 2: 'two'}
New:  {1: 'one', 2: 'two'}
5

Đã trả lời ngày 23 tháng 1 năm 2020 lúc 19:42Jan 23, 2020 at 19:42

Hướng dẫn how do i copy a dictionary in python? - làm cách nào để sao chép từ điển trong python?

3

Bạn có thể sử dụng trực tiếp:

Orignal:  {1: 'one', 2: 'two'}
New:  {1: 'one', 2: 'two'}
6

Trong đó đối tượng dict2 là một bản sao độc lập của dict1, vì vậy bạn có thể sửa đổi dict2 mà không ảnh hưởng đến dict1.

Điều này làm việc cho bất kỳ loại đối tượng.

Đã trả lời ngày 2 tháng 8 năm 2017 lúc 10:21Aug 2, 2017 at 10:21

VIIIKVIIIKViiik

132 Huy hiệu đồng2 bronze badges

2

Một cách sạch sẽ khác sẽ được sử dụng JSON. Xem mã bên dưới

Orignal:  {1: 'one', 2: 'two'}
New:  {1: 'one', 2: 'two'}
7

Để tạo một từ điển khác, do json.dumps () và sau đó json.loads () trên cùng một đối tượng từ điển. Bạn sẽ có đối tượng Dict riêng biệt.

Đã trả lời ngày 10 tháng 12 năm 2020 lúc 10:25Dec 10, 2020 at 10:25

Hướng dẫn how do i copy a dictionary in python? - làm cách nào để sao chép từ điển trong python?

OnkaronkarOnkar

2293 Huy hiệu bạc9 Huy hiệu Đồng3 silver badges9 bronze badges

1

Từ điển có thể được sao chép không?

Từ điển cũng có thể được sao chép bằng toán tử = trỏ đến cùng một đối tượng với bản gốc.Vì vậy, nếu có bất kỳ thay đổi nào được thực hiện trong từ điển sao chép cũng sẽ phản ánh trong từ điển gốc., which points to the same object as the original. So if any change is made in the copied dictionary will also reflect in the original dictionary.

Làm cách nào để tạo một bản sao sâu của một từ điển?

Để tạo một bản sao sâu, hãy sử dụng hàm DeepCopy () của mô -đun sao chép.Trong một bản sao sâu, các bản sao được chèn thay vì các tham chiếu đến các đối tượng, do đó, việc thay đổi cái này không thay đổi cái kia.Sau đây là một ví dụ về việc áp dụng hàm DeepCopy () cho một lát cắt.use the deepcopy() function of the copy module. In a deep copy, copies are inserted instead of references to objects, so changing one does not change the other. The following is an example of applying the deepcopy() function to a slice.

Copy () làm gì trong Python?

Định nghĩa và cách sử dụng.Phương thức Copy () trả về một bản sao của danh sách được chỉ định.returns a copy of the specified list.

Làm thế nào để bạn nhân đôi một khóa từ điển?

Nếu bạn muốn giữ các khóa trùng lặp trong từ điển, bạn có hai hoặc nhiều giá trị khác nhau mà bạn muốn liên kết với cùng một khóa trong từ điển.Từ điển không thể có cùng các khóa, nhưng chúng ta có thể đạt được hiệu ứng tương tự bằng cách giữ nhiều giá trị cho một khóa trong từ điển.you have two or more different values that you want to associate with same key in dictionary. The dictionary can not have the same keys, but we can achieve a similar effect by keeping multiple values for a key in the dictionary.