Các khóa khớp trong từ điển Python
Dễ dàng trích xuất giá trị nếu chúng ta có chìa khóa, giống như mở ổ khóa bằng chìa khóa. Tuy nhiên, điều ngược lại không hề đơn giản, kiểu như “bẻ chìa có ổ”, có thể Show Đôi khi, việc trích xuất khóa trở nên quan trọng, đặc biệt khi khóa và giá trị có mối quan hệ một đối một. Đó là, khi một trong số chúng là duy nhất và do đó có thể đóng vai trò là khóa Một ngày nọ, tôi đã hỏi trên LinkedIn rằng liệu mọi người có hào hứng với việc khớp mẫu trong Python 3 không. 10 Một phần ba số người được hỏi không biết khớp mẫu là gì, vì vậy thật là một dịp hoàn hảo để viết một bài đăng trên blog về nó Như với tất cả các cấu trúc, khớp mẫu không cần thiết cho các ngôn ngữ lập trình. Python đạt phiên bản 3. 10 trước khi nhận được nó. Nhưng đó là một tính năng cho phép chúng tôi viết mã rõ ràng hơn và thường chính xác hơn Và nếu bạn thích các ngôn ngữ lập trình chức năng — chẳng hạn như Erlang, Haskell, v.v. — thì có thể bạn đã bỏ qua khớp mẫu khi viết Python Tôi đã làm, vì vậy tôi rất vui vì tính năng này sẽ có sẵn trong Python 3. 10 (hiện đang ở phiên bản beta 4) Trong Python, khớp mẫu sẽ hoạt động như thế này
Python sẽ kiểm tra xem 3 có khớp với 4 không, sau đó là 5 và nếu không có gì khớp, nó sẽ khớp với 6 (một kiểu bắt tất cả) 7 có thể khá thông minh, ví dụ: giả sử 3 là 9 và 4 là 1. Chúng ta có thể viết một cái gì đó như
Bạn có thể thấy điều này mạnh mẽ như thế nào Để xem nó hoạt động như thế nào, tôi đã tìm một số mã có chứa một vài câu lệnh 2/ 3/_______9_______4Mã ban đầu lớn hơn một chút và chứa chức năng bổ sung hiện nằm ngoài phạm vi, vì vậy tôi đã tách các bit thú vị
Cách sử dụng rất đơn giản
dẫn đến
Vậy chức năng này sẽ trông như thế nào với khớp mẫu?
Mặc dù vậy, ví dụ này rất đơn giản vì nó rất "tuyến tính" và tất cả những gì tôi đang làm là tiết kiệm cho mình một số thao tác gõ bằng cách tránh 5 mỗi lần. Thật dễ dàng để thể hiện với 6Tuy nhiên, khớp mẫu trở nên mạnh mẽ khi chúng tôi yêu cầu Python phân tách mẫu mà chúng tôi muốn khớp Giả sử chúng ta đang lấy dữ liệu từ đâu đó và chúng ta cần định hình dữ liệu đó đúng cách (Điều đó xảy ra thường xuyên như thế nào, phải không?. ) Dữ liệu đến có thể có dạng sau
hoặc là
hoặc là
Trong trường hợp cuối cùng này, chúng ta không nên xử lý dữ liệu và chỉ ghi nhật ký 7Thay vào đó, trong hai trường hợp đầu tiên, chúng ta cần làm gì đó với các phần tử của danh sách hoặc một số nguyên. Và đầu ra phải luôn là một danh sách, bởi vì chúng tôi không muốn người tiêu dùng chức năng của chúng tôi viết thêm logic để xử lý việc phân tách danh sách/số nguyên. Làm cách nào để viết một hàm như vậy mà không khớp mẫu?
0Cách trên hoạt động tốt và đó là cách bạn có thể viết Python ngày nay, nhưng bạn có nhận thấy chi phí tinh thần khi cố gắng hiểu cấu trúc dữ liệu mà bạn đang nhận được không? . Khớp mẫu giúp dễ hiểu hơn 1 0Bây giờ, chỉ bằng cách đọc mã, tôi hiểu các định dạng mà 8 có thể có, không cần tài liệu. Chúng tôi cũng thấy một số tính năng mạnh mẽ mà chúng tôi chưa từng thấy trước đây. Bằng cách viết 9 và 0, Python liên kết — tương ứng — 1 đến 2 và 3 đến 4Tất nhiên là còn nhiều thứ nữa (ví dụ như bảo vệ). trong trường hợp bạn tò mò, PEP 634 cung cấp thông số kỹ thuật đầy đủ và PEP 636 trình bày hướng dẫn Làm cách nào để kiểm tra xem khóa từ điển có khớp với Python không?Kiểm tra xem khóa có tồn tại hay không bằng cách sử dụng phương thức get()
. Nếu không có khóa, nó sẽ trả về một giá trị mặc định (nếu được thông qua) hoặc nó trả về Không có. Sử dụng phương pháp này, chúng ta có thể chuyển một khóa và kiểm tra xem khóa có tồn tại trong từ điển python không.
Từ điển Python có thể có 2 khóa giống nhau không?Đầu tiên, một khóa nhất định chỉ có thể xuất hiện trong từ điển một lần. Không cho phép sao chép khóa . Từ điển ánh xạ mỗi khóa thành một giá trị tương ứng, vì vậy sẽ không hợp lý khi ánh xạ một khóa cụ thể nhiều lần.
Bạn có thể sử dụng == trên từ điển trong Python không?Theo tài liệu python, bạn thực sự có thể sử dụng toán tử == trên từ điển .
Từ điển có thể có hai khóa giống nhau với các giá trị khác nhau không?Bạn không thể . Các khóa phải là duy nhất. |