On 7/25/19 2:25 AM, David Mertz wrote:
Exactly! that was my thought that the exception message could hint at
likely approaches. The NumPy example seems to have a good pattern:
arr1 == arr2
|ValueError:Thetruth value of an array withmore than one element |isambiguous.
|Usea.any()ora.all().|
It's not the equality operator that errors: `==` means element-wise
comparison in Numpy.
The error would come from a conversion of the array to bool:
>>> numpy.array([1, 2, 3]) == numpy.array([1, 3, 4])
array([ True, False, False])
>>> if numpy.array([ True, False, False]):
... print('Same!')
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: The truth value of an array with more than one element is
ambiguous. Use a.any() or a.all()
Numpy currently returns False when `==` “doesn't make sense”, but
apparently has plans to change that:
>>> numpy.array([1, 2, 3]) == numpy.array([1, 2])
__main__:1: DeprecationWarning: elementwise comparison failed; this will
raise an error in the future.
False
>>> numpy.array([1, 2, 3]) == numpy.array(['a', 'b'])
__main__:1: FutureWarning: elementwise comparison failed; returning
scalar instead, but in the future will perform elementwise comparison
False
>>> numpy.__version__
'1.16.4'
On Wed, Jul 24, 2019, 8:06 PM Rob Cliffe via Python-Dev
<python-dev@python.org <mailto:python-dev@python.org>> wrote:
On 25/07/2019 00:09:37, David Mertz wrote:
> I agree with Greg.
>
> There are various possible behaviors that might make sense, but
having
> `d.values() != d.values()` is about the only one I can see no
sense in.
+1
>
> This really feels like a good cade for reading a descriptive
> exception. If someone wants too compare `set(d.values())` that's
> great. If they want `list(d.values())`, also a sensible question.
But
> the programmer should spell it explicitly.
>
>
So, a helpful error message including something like "Cannot compare
dict.values directly, consider converting to sets / lists / sorted
lists
before comparing" ?
_______________________________________________
Python-Dev mailing list -- python-dev@python.org
<mailto:python-dev@python.org>
To unsubscribe send an email to python-dev-le...@python.org
<mailto:python-dev-le...@python.org>
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at
https://mail.python.org/archives/list/python-dev@python.org/message/CSTSLCDEJYKDLADQV5PJRCSSVTMB5RIG/
_______________________________________________
Python-Dev mailing list -- python-dev@python.org
To unsubscribe send an email to python-dev-le...@python.org
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at
https://mail.python.org/archives/list/python-dev@python.org/message/2IMLY36A6K45LHCXO2OVQJZBQKL47U6T/
_______________________________________________
Python-Dev mailing list -- python-dev@python.org
To unsubscribe send an email to python-dev-le...@python.org
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at
https://mail.python.org/archives/list/python-dev@python.org/message/DRG757EQKEDNKPPM2KXMZ5NVVSBSGMCL/