Hướng dẫn can you use == on dictionaries in python? - bạn có thể sử dụng == trên từ điển trong python không?
Khi tôi phải so sánh hai từ điển lần đầu tiên, tôi đã đấu tranh rất nhiều! Show
Đối với từ điển đơn giản, so sánh chúng thường đơn giản. Bạn có thể sử dụng toán tử 5 và nó sẽ hoạt động.Tuy nhiên, khi bạn có nhu cầu cụ thể, mọi thứ trở nên khó khăn hơn. Lý do là, Python không có tính năng tích hợp cho phép chúng tôi:
Trong bài viết này, tôi sẽ chỉ ra cách bạn có thể thực hiện các hoạt động đó và nhiều hơn nữa, vì vậy hãy để đi. Tại sao bạn cần một cách mạnh mẽ để so sánh từ điểnHãy tưởng tượng kịch bản sau: Bạn có hai từ điển đơn giản. Làm thế nào chúng ta có thể khẳng định nếu chúng phù hợp? Dễ dàng, phải không?
Đó là loại mong đợi, từ điển là như nhau. Nhưng điều gì sẽ xảy ra nếu một số giá trị khác nhau, kết quả sẽ là 9 nhưng chúng ta có thể biết chúng khác nhau ở đâu không?
Thế còn ________ 21 bên trong 2. Hãy nói rằng chúng tôi muốn bỏ qua các trường hợp của họ.
Oops... Điều gì sẽ xảy ra nếu con số là 3 và chúng tôi coi hai chiếc phao là giống nhau nếu chúng có ít nhất 3 chữ số đáng kể bằng nhau? Đặt một cách khác, chúng tôi muốn kiểm tra xem chỉ có 3 chữ số sau trận đấu Decimal Point.
Bạn cũng có thể muốn loại trừ một số trường khỏi so sánh. Ví dụ, bây giờ chúng tôi có thể muốn xóa giá trị 2-> khỏi kiểm tra. Trừ khi chúng tôi tạo ra một từ điển mới mà không có nó, không có phương pháp nào để làm điều đó cho bạn.
Có, điều gì sẽ xảy ra nếu một giá trị là một mảng 5?
Ồ không, nó làm tăng một ngoại lệ ở giữa khuôn mặt của chúng tôi!
Vì 6 không thể thực hiện các so sánh nâng cao, chỉ có hai hình thức đạt được điều đó. Bạn có thể tự thực hiện chức năng hoặc sử dụng thư viện của bên thứ ba. Tại một số điểm trong cuộc sống của bạn, bạn có thể đã nghe về việc không phát minh lại bánh xe. Vì vậy, đó chính xác là những gì chúng ta sẽ làm trong hướng dẫn này.
Chúng tôi sẽ áp dụng một thư viện có tên 7, từ ZepWorks. 7 có thể chọn sự khác biệt giữa từ điển, vòng lặp, chuỗi và các đối tượng khác. Nó hoàn thành rằng bằng cách tìm kiếm các thay đổi một cách đệ quy. 7 không phải là đứa trẻ duy nhất trong khối, cũng có DictDiffer, được phát triển bởi những người ở Cern. 0 cũng rất tuyệt nhưng thiếu rất nhiều tính năng làm cho 7 rất thú vị. Trong mọi trường hợp, tôi khuyến khích bạn xem xét cả hai và xác định cái nào phù hợp nhất với bạn.Thư viện này tuyệt vời đến mức nó không chỉ hoạt động với từ điển mà còn các vòng lặp, chuỗi và thậm chí các đối tượng tùy chỉnh khác. Ví dụ: bạn có thể "thậm chí trộn và kết hợp" và lấy sự khác biệt giữa hai danh sách các dicts. Nhận được sự khác biệt đơn giảnTrong ví dụ này, chúng tôi sẽ giải quyết ví dụ đầu tiên tôi chỉ cho bạn. Chúng tôi muốn tìm khóa có giá trị khác nhau giữa hai 6. Hãy xem xét đoạn mã sau, nhưng lần này sử dụng 7.
Đáng kinh ngạc! Nó cho chúng ta biết rằng khóa 4 có giá trị 1 nhưng 6, B mới có giá trị mới, 2.Bỏ qua trường hợp chuỗiTrong ví dụ thứ hai của chúng tôi, chúng tôi đã thấy một ví dụ trong đó một yếu tố của danh sách ở chữ hoa, nhưng chúng tôi không quan tâm đến điều đó. Chúng tôi muốn bỏ qua nó và coi 6 là 7Bạn có thể giải quyết điều đó bằng cách đặt 8
Nếu chúng ta không làm điều đó, một thông điệp rất hữu ích được in.
So sánh giá trị floatChúng tôi cũng đã thấy một trường hợp chúng tôi có một số 3 mà chúng tôi chỉ muốn kiểm tra xem 3 chữ số quan trọng đầu tiên có bằng nhau không. Với 0, có thể vượt qua số chữ số chính xác sau điểm thập phân. Ngoài ra, vì 3 khác với ________ 42, chúng tôi cũng có thể muốn bỏ qua so sánh loại. Chúng ta có thể giải quyết điều đó bằng cách đặt 3.
So sánh các giá trị >>> a = { 'number': 1, 'list': ['ONE', 'two'] } >>> b = { 'list': ['one', 'two'], 'number': 1 } >>> a == b False 5Khi chúng tôi thử so sánh hai từ điển với một mảng 5 trong đó, chúng tôi đã thất bại thảm hại. May mắn thay, 0 có lưng của chúng tôi ở đây. Nó hỗ trợ các đối tượng 5 theo mặc định!
Không vấn đề gì! 0Nó cho thấy rằng không chỉ các giá trị là khác nhau mà còn các loại! So sánh từ điển với các đối tượng >>> a = {
'number': 1,
'list': ['one', 'two'],
'array': np.ones(3)
}
>>> b = {
'list': ['one', 'two'],
'number': 1,
'array': np.ones(3)
}
>>> a == b
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
|