Tôi muốn kiểm tra sự hiện diện của một từ khóa trong từ điển là 'nếu khóa không có trong từ điển: làm điều gì đó' Tôi đã thực hiện điều này nhiều lần, nhưng lần này nó hoạt động kỳ lạ.python 2.7 hiện diện trong từ điển
đặc biệt:
termCircuit = termCircuitMap[term]
lợi nhuận KeyError
khi tôi sửa lỗi mã này trong Eclipse PyDev, tôi đã nhận (biểu thức sử dụng) như sau:
term in termCircutiMap # prints False
term in termCircuitMap.keys() # prints True
Đừng ai hiểu làm thế nào đây là khả thi? Tôi nghĩ rằng nếu một cái gì đó là 'trong' bộ chìa khóa thì nó là 'trong' từ điển.
Tôi đang đính kèm ảnh chụp màn hình đánh giá.
Cảm ơn rất nhiều cho việc giải thích :)
điều này lạ ... có bất kỳ mã nào giữa hai câu lệnh có điều kiện này không? –
Nếu bạn đang thực sự chạy hai dòng đó ngay lập tức, không có lời giải thích nào cho lỗi này. 'key trong aDict' thực sự nhanh hơn và vượt trội hơn' key trong aDict.keys() ', nhưng chúng _should_ cả hai đều trả về cùng một giá trị. Có thể một cái gì đó đã sửa đổi từ điển giữa những kiểm tra? –
Bạn có thể hiển thị ví dụ về mã thực tế thể hiện sự cố không? Loại chìa khóa trong dict của bạn là gì? Hành vi này có thể thực hiện được nếu các khóa là các đối tượng với các định nghĩa băm/bình đẳng không tương thích. – BrenBarn