在我的代码中,对各种容器(列表,字典等)的相等性进行了大量的比较.容器的键和值的类型为float,bool,int和str.内置的==和!=工作得非常好.
我刚刚了解到必须使用自定义比较函数来比较容器值中使用的浮点数.我已经编写了这个函数(让我们称它为approxEqual(),并假设它需要两个浮点数,如果它们被判断为相等则返回True,否则返回False).
我更喜欢将现有代码的更改保持在最低限度.(新的类/函数/等可以根据需要复杂化.)
例:
if dict1 != dict2:
raise DataMismatch
Run Code Online (Sandbox Code Playgroud)
的dict1 != dict2条件需要使得在dict1和dict2的值中所使用的任何浮子正在使用approxEqual比较功能,而不是重写__eq__.
字典的实际内容来自各种来源(解析文件,计算等).
注意:我之前问了一个关于如何覆盖内置float的eq的问题.这本来是一个简单的解决方案,但我了解到Python不允许覆盖内置类型的__eq__运算符.因此这个新问题.