[Python-ideas] Add dict.getkey() and set.get()
tjreedy at udel.edu
Sat Sep 14 22:22:09 CEST 2013
On 9/14/2013 2:20 PM, David Mertz wrote:
> I'm not putting any huge weight in my toy class. But notice that it
> deliberately is NOT hashable, hence cannot make it into a set (or dict key):
> >>> [x for x in (1,2, 7.2, 7.3, 7.9, 8.0, 9) if ref_val.close_to(x)]
> But anyway, whether or not my FuzzyNumber class is a *good* idea, it is
> something that end users *could* do as long as we give them an .__eq__()
> magic method to play with. Hence a 'getexact()' function or a
> dict.getkey() method would have to do SOMETHING when presented with such
> a transitivity-of-equality-breaking object.
I would expect the proposed set/dict methods to work by hashing the
target. Otherwise, they would be no be justified as *methods*, as the
generic function should be, as you said, a function.
The generic 'iterate and return the first item matching the target' will
either return the first match or do whatever the else: clause dictates.
I do not see why you think there is a special problem with this. There
is nothing special about equality versus any other match predicate.
Transitivity is irrelevant here. On the other hand, symmetry is a
concern, as 'item == target' and 'target == item' could be different and
the result of the function would depend on which is used.
Terry Jan Reedy
More information about the Python-ideas