1. Sao chép Dict bằng hàm copy() trong Python

Trong Python, Bạn không thể sao chép từ một DictA sang DictB thông qua câu lệnh gán DictA = DictB. Bởi vì DictA sẽ chỉ là tham chiếu đến DictB và các thay đổi được thực hiện bởi DictB cũng sẽ tự động được thực hiện trong DictA . Nói ngắn ngọn lại thì khi gán DictA = DictB, nếu DictB thay đổi thì DictA cũng sẽ thay đổi giống DictB.

Trong Python đã có sẵn cho ta phương thức copy() để sao chép hoàn toàn độc lập các phần tử của DictB sang DictA. Khi sử dụng phương thức copy() nếu trường hợp DictB thay đổi sẽ không làm ảnh hưởng đến DictA (điều này ngược lại với việc gán hai Dict bằng phép gán bằng “=”)

Ví dụ dưới đây sử dụng phương thức copy() để sao chép các phần tử của DictB sang DictA như sau:

# Khai bao dictA khong co phan tu
dictA = {}
print("DictA ban dau: {0}".format(dictA))

# Khai bao dictB gom 5 phan tu co kieu du lieu khac nhau
dictB = {
  "ho ten": "Nguyen Van A",
  "doc than" : True,
  "que quan": "Ha Noi",
  "nam sinh": 2002,
  "yeu thich": ['xanh', 'do', 'vang']
}

# Copy cac phan tu dictB sang dictA bang phuong thuc copy()
dictA = dictB.copy()

# Hien thi cac phan tu cua dictA
print("DictA sau khi coppy tu DictB:")
print(dictA)

Kết quả:

DictA ban dau: {}
DictA sau khi coppy tu DictB:
{‘ho ten’: ‘Nguyen Van A’, ‘doc than’: True, ‘que quan’: ‘Ha Noi’, ‘nam sinh’: 2002, ‘yeu thich’: [‘xanh’, ‘do’, ‘vang’]}

2. Sao chép Dict bằng hàm dict() trong Python

Phương thức dict() trong Python thường được sử dụng để ép các kiểu dữ liệu khác về kiểu <class ‘dict’> trong Python. Ngoài ra, khi cần sử dụng để sao chép giữa các dict trong Python, ta cũng có thể sử dụng phương thức này, nó cũng tương tự như phương thức copy() ở phần trên.

Ví dụ dưới đây sử dụng phương thức dict() để sao chép các phần tử của DictB sang DictA như sau:

# Khai bao dictA khong co phan tu
dictA = {}
print("DictA ban dau: {0}".format(dictA))

# Khai bao dictB gom 5 phan tu co kieu du lieu khac nhau
dictB = {
  "ho ten": "Nguyen Van A",
  "doc than" : True,
  "que quan": "Ha Noi",
  "nam sinh": 2002,
  "yeu thich": ['xanh', 'do', 'vang']
}


# Copy cac phan tu dictB sang dictA bang phuong thuc dict()
dictA = dict(dictB)

# Hien thi cac phan tu cua dictA
print("DictA sau khi coppy tu DictB:")
print(dictA)

Kết quả:

DictA ban dau: {}
DictA sau khi coppy tu DictB:
{‘ho ten’: ‘Nguyen Van A’, ‘doc than’: True, ‘que quan’: ‘Ha Noi’, ‘nam sinh’: 2002, ‘yeu thich’: [‘xanh’, ‘do’, ‘vang’]}