Testing for key membership is directly related to the purpose of dict, that’s what it provides, that’s why … it provides that operation
Linear search (testing each one) isn’t that. You don’t need dict to do that for you, if dict did this then it would be behaving like a list or, in other words, use a list. But since it does provide the values, you can do linear search on that.
Instead of having each thing do all possible things, we can combine operations to get the same effect without the duplicated behaviour.
The value that a dict’s value method returns however, that isn’t a dict and that has the behaviour you’re looking for.
There’s also no reason to shy away from changing data types, re-shaping your data can be thought of as a computation, there’s nothing wrong with that, if anything it probably makes your life easier if you’re willing to reshape things to fit the operations that you’re going to do. (At least, this makes sense as long as you’re planning to do something that requires touching the whole structure anyway. Dict is all about avoiding that.)