inq*_*ive 1 python pytest python-3.x
说,我有两个清单:
a = [1,2,3]
和 b = [2,3,1]
如果我做了a == b它返回False,
如果我检查sorted(a) == sorted(b),它会返回True.
现在,我有两个对象:
obj1 = {'a': 1, 'b': 2, 'c': [1, 2]}
和 obj2 = {'b': 2, 'a': 1, 'c': [1, 2]}
obj1 == obj2 无论键的顺序如何,都是真的.
但如果 obj2 = {'b': 2, 'a': 1, 'c': [2, 1]}
我该如何测试平等?显然,obj1 == obj2返回False.sorted(obj1)会有['a', 'b', 'c'],所以sorted(obj1) == sorted(obj2)是一种废物检查.
我应该可能已经覆盖了对象的相等方法,或者使用了一些库.有没有办法为深度相等编写惯用的python代码?
sort如果它是类型的dict中的每个元素list然后进行比较
>>> def sorted_element_dict(d):
... return {k:sorted(v) if isinstance(v, list) else v for k,v in d.items()}
...
>>> sorted_element_dict(obj1) == sorted_element_dict(obj2)
True
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
91 次 |
| 最近记录: |