Làm thế nào để bạn tổng hợp các giá trị của hai từ điển trong python?

Từ điển là một trong những cấu trúc dữ liệu cơ bản và được sử dụng nhiều nhất trong lập trình python. Trường hợp bạn muốn kết hợp hai hoặc nhiều từ điển không phải là hiếm gặp. Trong bài viết này, chúng ta sẽ nghiên cứu nhiều cách khác nhau để hợp nhất hai từ điển trong Python trong các tình huống khác nhau cùng với mã

Nhưng trước đó, chúng ta hãy xem sơ qua về từ điển trong python bên dưới

Từ điển trong Python là gì?

Từ điển là một tập hợp các thành phần dữ liệu không có thứ tự được lưu trữ trong các cặp khóa-giá trị, không giống như bất kỳ cấu trúc dữ liệu nào khác chứa dữ liệu dưới dạng một thành phần giá trị. Bạn có thể tạo từ điển bằng cách đặt cặp khóa-giá trị bên trong dấu ngoặc nhọn ({}) được phân tách bằng dấu phẩy (,)

Ngoài ra, các phần tử khóa và giá trị được phân tách bằng cách đặt dấu chấm phẩy (. ) giữa họ. Từ điển trong python được sắp xếp theo thứ tự, có thể thay đổi và không cho phép trùng lặp. Điều đó có nghĩa là từ điển không thể có hai mục có cùng khóa;

Thí dụ

sample_dict = {
  "Language_1": "Python",
  "Langauge_2": "C++",
  "Language_3": "Java"
}
print(sample_dict)

 

đầu ra

{'Language_1': 'Python', 'Langauge_2': 'C++', 'Language_3': 'Java'}

 

Kiểm tra cách tạo từ điển python để tìm hiểu thêm

Khi nào cần gộp từ điển?

Từ điển được sử dụng để lưu trữ các cặp khóa-giá trị. Chúng có thể đặc biệt hữu ích để lưu trữ dữ liệu phải được lập chỉ mục. Ví dụ: nếu bạn muốn ghi lại tất cả mật khẩu được sử dụng trên thiết bị, bạn sẽ triển khai một từ điển theo dõi tất cả các giá trị mật khẩu khác nhau cho các khóa tương ứng của tất cả các ứng dụng mà chúng được sử dụng cho

Nhưng điều gì sẽ xảy ra khi bạn cần kết hợp các bản ghi mật khẩu của hai hoặc nhiều thiết bị mà bạn sở hữu? . Chúng tôi hợp nhất hai từ điển khi cần lưu trữ hai phần khác nhau của một cơ sở dữ liệu chung

Làm cách nào để hợp nhất từ ​​điển trong Python?

Dưới đây là 8 phương pháp duy nhất mà bạn có thể nối hai từ điển trong python

1) Sử dụng phương thức update()

Bạn có thể hợp nhất hai từ điển trong python bằng phương thức update(). Sử dụng phương pháp cập nhật, từ điển đầu tiên được hợp nhất với từ điển khác bằng cách ghi đè lên nó. Do đó, không có từ điển mới nào được tạo và nó trả về Không có. Nếu cả hai từ điển chứa cùng một khóa và các giá trị khác nhau, thì đầu ra cuối cùng sẽ ghi đè lên giá trị của từ điển sau

Thí dụ

dict_1 = {'John': 15, 'Rick': 10, 'Misa' : 12 }
dict_2 = {'Bonnie': 18,'Rick': 20,'Matt' : 16 }
dict_1.update(dict_2)
print('Updated dictionary:')
print(dict_1)

 

đầu ra

{'John': 15, 'Rick': 20, 'Misa': 12, 'Bonnie': 18, 'Matt': 16}

 

2) Sử dụng hợp nhất (. ) nhà điều hành

Bạn có thể hợp nhất hai từ điển bằng cách sử dụng. nhà điều hành. Đây là một phương pháp rất thuận tiện để hợp nhất các từ điển; . 9 phiên bản trở lên

Thí dụ

def Merge(dict_1, dict_2):
	result = dict_1 | dict_2
	return result
	
# Driver code
dict_1 = {'John': 15, 'Rick': 10, 'Misa' : 12 }
dict_2 = {'Bonnie': 18,'Rick': 20,'Matt' : 16 }
dict_3 = Merge(dict_1, dict_2)
print(dict_3)

 

đầu ra

{'John': 15, 'Rick': 20, 'Misa': 12, 'Bonnie': 18, 'Matt': 16}

 

3) Sử dụng toán tử **

Cách đơn giản nhất để nối hai từ điển trong python là sử dụng toán tử giải nén(**). Bằng cách áp dụng toán tử "**" cho từ điển, nó mở rộng nội dung của nó là tập hợp các cặp khóa-giá trị

Ví dụ: nếu bạn áp dụng "**" cho dict_1 như hình bên dưới, đầu ra sẽ thu thập các cặp khóa-giá trị được lưu trữ bên trong dict_1

Thí dụ

dict_1 = {'John': 15, 'Rick': 10, 'Misa': 12}
print(dict(**dict_1))

 

đầu ra

{'John': 15, 'Rick': 10, 'Misa': 12}

 

Bây giờ, để kết hợp hai từ điển bằng cách sử dụng "**", chúng tôi sẽ sử dụng một từ điển bổ sung để lưu trữ đầu ra cuối cùng. Nội dung của dict_1 và dict_2 sẽ mở rộng bằng cách sử dụng toán tử "**" và kết hợp để tạo thành dict_3

Tương tự như phương pháp cập nhật, nếu cả hai từ điển có cùng một khóa với các giá trị khác nhau, thì đầu ra cuối cùng sẽ chứa giá trị của từ điển thứ hai. Hãy xem ví dụ dưới đây để hiểu hoạt động của toán tử "**"

Thí dụ

________số 8_______

 

đầu ra

{'John': 15, 'Rick': 20, 'Misa': 12, 'Bonnie': 18, 'Matt': 16}

 

Bạn cũng có thể hợp nhất ba từ điển cùng lúc bằng cách sử dụng toán tử “**”, như minh họa trong ví dụ bên dưới

Thí dụ

{'Language_1': 'Python', 'Langauge_2': 'C++', 'Language_3': 'Java'}
0

 

đầu ra

{'Language_1': 'Python', 'Langauge_2': 'C++', 'Language_3': 'Java'}
1

 

4) Giải nén từ điển thứ hai

Giải nén từ điển thứ hai bằng toán tử "**" sẽ giúp bạn hợp nhất hai từ điển và nhận kết quả cuối cùng. Tuy nhiên, phương pháp này không được sử dụng nhiều và khuyến nghị vì nó sẽ chỉ hoạt động nếu các khóa của từ điển thứ hai là các chuỗi bắt buộc. Nếu gặp phải bất kỳ giá trị int nào, thì nó sẽ đưa ra phương thức "TypeError"

Thí dụ

{'Language_1': 'Python', 'Langauge_2': 'C++', 'Language_3': 'Java'}
2

 

đầu ra

{'John': 15, 'Rick': 20, 'Misa': 12, 'Bonnie': 18, 'Matt': 16}

 

5) Sử dụng bộ sưu tập. Phương thức ChainMap()

Đây là một trong những phương pháp ít được biết đến nhất để hợp nhất hai từ điển trong python. Sử dụng bộ sưu tập. ChainMap(), bạn phải sử dụng mô-đun bộ sưu tập từ thư viện ChainMap sẽ giúp bạn nhóm nhiều từ điển trong một chế độ xem

Nếu cả hai từ điển chứa cùng một khóa/s, thì giá trị của từ điển đầu tiên được tìm nạp trong đầu ra cuối cùng. Lưu ý rằng chúng tôi sẽ sử dụng tùy chọn “nhập. từ. ” cú pháp để nhập mô-đun bộ sưu tập như trong ví dụ bên dưới

Thí dụ

{'Language_1': 'Python', 'Langauge_2': 'C++', 'Language_3': 'Java'}
4

 

đầu ra

{'Language_1': 'Python', 'Langauge_2': 'C++', 'Language_3': 'Java'}
5

 

6) Sử dụng itertools. xích()

Trình lặp trả về phần tử từ lần lặp đầu tiên cho đến khi nó trống và sau đó chuyển sang lần lặp tiếp theo. Về cơ bản, nó sẽ xử lý chuỗi liên tiếp dưới dạng một chuỗi duy nhất

Vì từ điển cũng có thể lặp lại, chúng ta có thể sử dụng hàm chain() từ lớp itertools và hợp nhất hai từ điển. Kiểu trả về của phương thức này sẽ là một đối tượng và do đó, chúng ta có thể chuyển đổi từ điển bằng hàm tạo dict()

Thí dụ

{'Language_1': 'Python', 'Langauge_2': 'C++', 'Language_3': 'Java'}
6

 

đầu ra

{'Language_1': 'Python', 'Langauge_2': 'C++', 'Language_3': 'Java'}
7

 

7) Sử dụng từ điển hiểu

Chúng ta có thể kết hợp hai từ điển trong python bằng cách sử dụng khả năng hiểu từ điển. Ở đây, chúng tôi cũng sử dụng vòng lặp for để lặp qua các mục từ điển và hợp nhất chúng để có kết quả cuối cùng. Nếu cả hai từ điển đều có khóa chung, thì đầu ra cuối cùng sử dụng phương thức này sẽ chứa giá trị của từ điển thứ hai.  

Thí dụ

{'Language_1': 'Python', 'Langauge_2': 'C++', 'Language_3': 'Java'}
8

 

đầu ra

{'John': 15, 'Rick': 20, 'Misa': 12, 'Bonnie': 18, 'Matt': 16}

 

8) Thêm giá trị của các khóa chung

Trong tất cả các phương pháp trên, nếu cả hai từ điển chứa các giá trị dữ liệu khác nhau của cùng một khóa, thì các giá trị trong đầu ra cuối cùng sẽ bị ghi đè. Điều gì sẽ xảy ra nếu bạn muốn giữ nguyên tất cả giá trị trong đầu ra cuối cùng?

Trong phương pháp này, chúng ta cũng sẽ sử dụng vòng lặp for để duyệt qua các khóa và giá trị trong từ điển bên trong hàm. Sau đó, chúng ta sẽ gọi hàm để lấy đầu ra cuối cùng là các từ điển được hợp nhất như hình bên dưới

Thí dụ

dict_1 = {'John': 15, 'Rick': 10, 'Misa' : 12 }
dict_2 = {'Bonnie': 18,'Rick': 20,'Matt' : 16 }
dict_1.update(dict_2)
print('Updated dictionary:')
print(dict_1)
0

 

đầu ra

dict_1 = {'John': 15, 'Rick': 10, 'Misa' : 12 }
dict_2 = {'Bonnie': 18,'Rick': 20,'Matt' : 16 }
dict_1.update(dict_2)
print('Updated dictionary:')
print(dict_1)
1

 

Phần kết luận

Làm việc với nhiều từ điển là một trong những tình huống phổ biến khi lập trình trong python. Nhưng kết hợp một hoặc nhiều từ điển thường là một nhiệm vụ khó khăn nếu bạn không biết các kỹ thuật để thực hiện điều tương tự. Do đó, chúng tôi đã trình bày các phương pháp khác nhau để hợp nhất từ ​​điển trong python