Cách so sánh các giá trị trong từ điển python
Tôi nghĩ rằng bạn đang hiểu lầm về 1. 1 được thiết kế để hoạt động với bất kỳ đối tượng nào, ngay cả khi chúng không hỗ trợ toán tử ==. Nói cách khác, NotImplemented trở thành False Show
Vì vậy, 3 trở thành Sai phù hợp với mong đợi của bạn “Hoặc Không được thực hiện”PeterL
Hãy xem ngữ nghĩa trong Python 2
Bạn mong đợi điều gì ở đây? . Có một số ngữ nghĩa có thể
Tôi không nghĩ rằng không có điều nào ở trên là ngữ nghĩa mặc định tốt Tôi nghĩ rằng tài liệu này gây hiểu nhầm đến mức nó sai mệnh lệnh. các giá trị bình đẳng cuối cùng rơi vào ngữ nghĩa mặc định cho bình đẳng, kiểm tra danh tính
lý do d. giá trị(). = d. các giá trị () không phải vì các đối tượng giá trị luôn so sánh không bằng nhau, mà bởi vì mỗi khi bạn gọi phương thức, nó sẽ trả về một đối tượng (khác biệt) mới Liên quan đến vấn đề 12445. các đối tượng giá trị chế độ xem chính tả bị thiếu tp_richcmp và tp_as_number - Trình theo dõi Python, tôi phủ nhận rằng không có ngữ nghĩa có ý nghĩa cho các đối tượng giá trị. Chúng rõ ràng là một túi các đối tượng tùy ý không có thứ tự, không phải là một bộ hay một chuỗi, chỉ là một bộ sưu tập. Chúng ta có thể định nghĩa bình đẳng một cách có ý nghĩa theo hai cách
Bài kiểm tra thứ hai gần như rẻ như bài kiểm tra danh tính trên chính các đối tượng giá trị. Thay vì
chúng tôi trả về 4 (ngoại trừ việc dict sở hữu đối tượng giá trị không được hiển thị với mã Python, vì vậy tôi đoán bài kiểm tra này sẽ chỉ có thể được viết bằng C)Thử nghiệm đầu tiên đắt hơn. Tôi không thể nghĩ làm thế nào để làm bài kiểm tra một cách hiệu quả. Nếu chúng có thể băm được, chúng ta có thể sử dụng Counter() nhưng không phải lúc nào chúng cũng có thể băm được PeterL
Trong trường hợp sử dụng của bạn, "so sánh eo biển của các lệnh" hoặc 6 là giải pháp phù hợpBất kỳ ngữ nghĩa nào của 7 (nhận dạng chính tả, trình tự, tập hợp và nhiều tập hợp) sẽ không hoạt động trong trường hợp nàyPeterL
Xem xét điều này 3Bạn vẫn nghĩ so sánh 8 bằng nhau chứ?Tôi không nghĩ đó là cách so sánh hữu ích. Vâng, tôi có thể thấy điều đó. Tôi không nghĩ rằng ví dụ của tôi là tốt, nhưng tôi vẫn hiểu ý của bạn. 5. Mặc dù vậy, tôi vẫn lo lắng về sự trở lại của 5 khi so sánh. Tôi nghĩ nó gây hiểu lầm, vì nó ngụ ý rằng nó đang thực hiện một “sự so sánh hợp lý”. Việc nó luôn trả về 5 (ngay cả khi so sánh với self) có thể gây nhầm lẫn. (Tôi hiểu tại sao điều đó lại xảy ra, tôi chỉ đang xem xét liệu nó có hữu ích hay gây nhầm lẫn khi làm điều đó. ) Tôi lưu ý rằng Julian trong Số phát hành 12445 cũng có sự nhầm lẫn tương tự, vì vậy tôi nghi ngờ mình có thể không đơn độc. Có sự khác biệt giữa “không thể so sánh được” và “không giống nhau”. Nhưng thật không may, == trên các giá trị trả về một 5 (theo suy nghĩ của tôi, ngụ ý không giống nhau) khi ý nghĩa thực sự của nó là “không thể so sánh được”Tôi lưu ý rằng các tài liệu đưa ra quan điểm về điều này, nhưng đó có thể không phải là nơi đầu tiên ai đó tìm kiếm. Và tôi đang suy nghĩ về một trường hợp sử dụng tốt Một tùy chọn có thể là nó tăng 0, mặc dù điều đó không bình thường và có thể có các vấn đề khác mà tôi không biết. Tôi tự hỏi liệu một 5 có liên quan không?Ngoài ra, làm các bài kiểm tra mà @rhettinger đã liệt kê? Vừa thấy @rhettinger thực hiện một cuộc thăm dò trên Twitter về “điều này làm được gì” - rất muốn xem kết quả câu hỏiĐộiSpen210người hùng biện |