[Tim, 'a' in 'a' == 1, etc]
Yeah, I ran into the same when converting some has_key() tests to using 'in'.
Bingo! Same here, but after adding __iter__ and __contains__ to UserDict.py, then fiddling test_userdict.py to match.
I guess it's not very common since nobody in their right minds should want to compare the result of an 'in' test to anything else. The has_key() tests did something like "assert d.has_key(k)==1" and the mindless translation of that is "assert k in d == 1"...
You'd think so <wink>. It was subtler in the first I bumped into, translating something like
assert d1.has_key(k) == d2.has_key(k)
The problem in
assert k in d1 == k in d2
is, I think, harder to spot. That is, you may well be in your right might if you want to compare the result of an 'in' test to the result of *another* 'in' test!
assert k in d1 != k in d2
succeeds if and only if k is in both d1 and d2 (assuming d1 is a dict and k isn't). I'm going to use that a lot in my code, because it's one less character than typing
assert k in d1 and k in d2
*something*-about-this-may-not-be-ideal-ly y'rs - tim