sách gpt4 ăn đã đi

Những cạm bẫy tiềm ẩn của việc hợp nhất mô-đun từ điển ChainMap trong Python [Được khuyến nghị]

In lại Tác giả: qq735679552 Thời gian cập nhật: 28-09-2022 22:32:09 28 4
mua khóa gpt4 giày nike

CFSDN nhấn mạnh vào giá trị tạo ra nguồn mở và chúng tôi cam kết xây dựng nền tảng chia sẻ tài nguyên để mọi nhân viên CNTT có thể tìm thấy thế giới tuyệt vời của bạn tại đây.

Bài viết trên blog CFSDN này thảo luận về những cạm bẫy tiềm ẩn của việc hợp nhất mô-đun từ điển ChainMap trong Python [Được khuyến nghị] do tác giả sưu tầm và biên soạn. Nếu bạn quan tâm đến bài viết này, hãy nhớ thích nó.

Trong Python, khi chúng ta có 2 từ điển cần merge, chúng ta có thể sử dụng phương thức update của từ điển, ví dụ:

  1. Một = {'Một': 1, 'b': 2}
  2. b = {'x': 3, 'Và': 4}
  3. Một.cập nhật(b)
  4. in(Một)

Hiệu ứng chạy được thể hiện trong hình dưới đây:

 

Những cạm bẫy tiềm ẩn của việc hợp nhất mô-đun từ điển ChainMap trong Python [Được khuyến nghị]

Tuy nhiên, có một vấn đề với phương pháp này - nó làm thay đổi một trong các từ điển. Nếu không muốn thay đổi 2 từ điển gốc thì chúng ta phải tạo một từ điển riêng:

  1. Một = {'Một': 1, 'b': 2}
  2. b = {'x': 3, 'Và': 4}
  3. c = từ điển(Một)
  4. c.cập nhật(b)
  5. in(c)
  6. in(Một)
 

Những cạm bẫy tiềm ẩn của việc hợp nhất mô-đun từ điển ChainMap trong Python [Được khuyến nghị]

Nếu hai từ điển gốc rất lớn thì phương pháp này sẽ lãng phí rất nhiều bộ nhớ.

Cho dù bạn trực tiếp sửa đổi một trong các từ điển gốc hay tạo một từ điển khác, cả hai giải pháp đều có một số sai sót. Vậy có cách nào để không sửa đổi từ điển gốc cũng như không tạo từ điển mới không?

Câu trả lời là ChainMap trong mô-đun bộ sưu tập.

ChainMap có thể được sử dụng để hợp nhất nhiều từ điển thành một đối tượng ChainMap. Đọc và viết đối tượng này giống như đọc từ điển.

Ví dụ:

  1. từ bộ sưu tập nhập khẩu Bản đồ chuỗi
  2. Một = {'Một': 1, 'b': 2}
  3. b = {'x': 3, 'Và': 4}
  4. c = Bản đồ chuỗi(Một, b)
  5. in(c['Một'])
  6. in(c['Và'])

Hiệu ứng chạy được thể hiện trong hình dưới đây:

 

Những cạm bẫy tiềm ẩn của việc hợp nhất mô-đun từ điển ChainMap trong Python [Được khuyến nghị]

Bạn không chỉ có thể "hợp nhất" hai từ điển, ChainMap còn có thể chấp nhận bất kỳ số lượng từ điển nào và hợp nhất tất cả chúng lại với nhau:

  1. từ bộ sưu tập nhập khẩu Bản đồ chuỗi
  2. Một = {'Một': 1, 'b': 2}
  3. b = {'x': 3, 'Và': 4}
  4. c = {'Với': 5, 'TRONG': 6}
  5. ngày = {'tôi': 7, 'h': 8, 'k': 9}
  6. = Bản đồ chuỗi(Một, b, c, ngày)
  7. in(['Một'],['Và'],['Với'],['k'])

Hiệu ứng chạy được thể hiện trong hình dưới đây:

 

Những cạm bẫy tiềm ẩn của việc hợp nhất mô-đun từ điển ChainMap trong Python [Được khuyến nghị]

ChainMap không thực sự hợp nhất các từ điển với nhau mà lưu trữ nội bộ một ánh xạ từ Khóa tới từng từ điển. Khi bạn đọc e[key], trước tiên, nó sẽ truy vấn khóa nằm trong từ điển nào, sau đó Truy vấn giá trị tương ứng trong từ điển tương ứng. Vì vậy việc sử dụng ChainMap hầu như không yêu cầu thêm dung lượng bộ nhớ (hiện tại bản thân đối tượng này sẽ chiếm một ít dung lượng, nhưng nếu bạn muốn hợp nhất một từ điển lớn thì dung lượng mà nó chiếm sẽ gần như không đáng kể).

Vậy bạn có nghĩ rằng việc sử dụng ChainMap có thể hợp nhất các từ điển một cách hoàn hảo không?

Trước khi sử dụng nó, bạn phải hiểu nó hoạt động như thế nào. Nếu bạn hiểu nó hoạt động như thế nào thì bằng cách hỏi những câu hỏi sau, bạn sẽ biết kết quả là gì trước khi chạy mã:

Nếu có một Key có cùng tên trong hai từ điển thì từ điển nào sẽ được đọc sau khi sử dụng ChainMap? Nếu bạn thêm một cặp Khóa-Giá trị vào đối tượng ChainMap, giá trị này sẽ được thêm vào đâu? Nếu Khóa bị xóa khỏi từ điển gốc, Khóa trong đối tượng ChainMap có biến mất không? Nếu bạn xóa Khóa khỏi đối tượng ChainMap, Khóa trong từ điển gốc có biến mất không?

Đầu tiên, hãy nói về câu trả lời cho câu hỏi đầu tiên:

Đối tượng ChainMap sẽ sử dụng giá trị trong từ điển đầu tiên có Khóa này, như trong hình sau:

 

Những cạm bẫy tiềm ẩn của việc hợp nhất mô-đun từ điển ChainMap trong Python [Được khuyến nghị]

Câu hỏi thứ hai là Khóa-Giá trị mới sẽ được thêm vào từ điển đầu tiên, như trong hình bên dưới:

 

Những cạm bẫy tiềm ẩn của việc hợp nhất mô-đun từ điển ChainMap trong Python [Được khuyến nghị]

Câu hỏi thứ ba là, nếu từ điển gốc được sửa đổi, đối tượng ChainMap sẽ được cập nhật tương ứng:

 

Những cạm bẫy tiềm ẩn của việc hợp nhất mô-đun từ điển ChainMap trong Python [Được khuyến nghị]

Câu hỏi thứ tư là nếu Key chỉ tồn tại trong một từ điển nguồn thì Key sẽ bị xóa khỏi từ điển nguồn. Nếu Khóa tồn tại trong nhiều từ điển, Khóa sẽ bị xóa khỏi từ điển đầu tiên. Sau khi bị xóa khỏi từ điển đầu tiên, ChainMap có thể tiếp tục đọc Khóa của từ điển nguồn thứ hai.

 

Những cạm bẫy tiềm ẩn của việc hợp nhất mô-đun từ điển ChainMap trong Python [Được khuyến nghị]

4 điểm trên phải được ghi nhớ khi bạn sử dụng ChainMap, nếu không có thể gây ra lỗi mà bạn không thể tìm thấy.

Tóm tắt.

Trên đây là những gì người biên tập giới thiệu với bạn về những cạm bẫy tiềm ẩn khi hợp nhất mô-đun từ điển ChainMap trong Python. Tôi hy vọng nó sẽ hữu ích cho bạn. Nếu bạn có bất kỳ câu hỏi nào, vui lòng để lại tin nhắn cho tôi và người biên tập sẽ trả lời bạn. thời gian! .

Link gốc: https://juejin.im/post/5d1442f7f265da1bad57178b.

Cuối cùng, bài viết này về những cạm bẫy tiềm ẩn [được khuyến nghị] khi hợp nhất mô-đun từ điển ChainMap trong Python kết thúc tại đây. Nếu bạn muốn biết thêm về những cạm bẫy ẩn [được khuyến nghị] khi hợp nhất mô-đun từ điển ChainMap trong Python, vui lòng tìm kiếm các bài viết của CFSDN hoặc tiếp tục. để duyệt các bài viết liên quan, tôi hy vọng bạn sẽ ủng hộ blog của tôi trong tương lai! .

28 4 0
qq735679552
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress