xem xét:Toán tử == thực sự làm gì với từ điển Python?
>>> a = {'foo': {'bar': 3}}
>>> b = {'foo': {'bar': 3}}
>>> a == b
True
Theo doc trăn, you can indeed use các ==
hành vào từ điển.
Điều gì đang thực sự xảy ra ở đây? Python có đệ quy kiểm tra từng phần tử của các từ điển để đảm bảo sự bình đẳng không? Liệu nó có đảm bảo các khóa được so khớp giống hệt nhau không và các giá trị cũng có khớp với nhau không?
Tài liệu có chỉ định chính xác những gì ==
trên từ điển nghĩa là gì? Hoặc liệu tôi có phải thực hiện phiên bản kiểm tra bình đẳng của riêng mình không?
(Nếu các nhà điều hành ==
làm việc, tại sao không dicts hashable? Đó là, tại sao tôi không thể tạo ra một set() của dicts, hoặc sử dụng một dict như một chìa khóa từ điển?)
dicts không thể bẻ khóa vì chúng có thể thay đổi và dữ liệu của chúng nhạy cảm với các trạng thái trong quá khứ. Nó sẽ dễ dàng để có hai dicts có trạng thái bình đẳng, nhưng băm không bình đẳng do lịch sử của một dict (có chứa nhiều mục giả) –
@SlaterTyranus: bạn có thể dễ dàng bỏ qua các mục giả; đó không phải là một vấn đề. Sự biến đổi là một vấn đề lớn. –