sorted key =不适用于子列表
|
我正在编写一个单元测试,其中一个检查一种返回包含子列表
[[],[],[]]
的列表的方法,子列表的顺序不仅影响子列表的数量及其值,问题在于不赞成使用TestCase.assertItemsEqual()
不是TestCase.assertElementsEqual()
方法。为了解决该问题,我决定对方法返回的列表和单元测试中的列表进行排序,并比较排序后的版本,但是问题是子列表始终具有None值,并且排序会产生错误:
>>> sorted( [ [None], [1,2] ] )
Traceback (most recent call last):
File \"<stdin>\", line 1, in <module>
TypeError: unorderable types: int() < NoneType()
实际上,我的子列表总是有8个值,其中一个是None,而我有2到4个子列表。
因此,我写了一个lambda,将None更改为0,因为顺序根本无关紧要,我只需要确保顺序是相同的即可:
>>> (lambda x: x if x is not None else 0)(None)
0
>>> (lambda x: x if x is not None else 0)(1)
1
但这行不通
>>> sorted( [ [None], [1,2] ], key = lambda x: x if x is not None else 0 )
Traceback (most recent call last):
File \"<stdin>\", line 1, in <module>
TypeError: unorderable types: int() < NoneType()
该错误消息使我认为将NoneType更改为IntType可以解决,但是我知道lambda中的x值是子列表之一,这就是为什么lambda不能正常工作的原因。但是我不知道如何解决它。
没有找到相关结果
已邀请:
2 个回复
亥套惟间连
函数。因此,我认为您在尝试替换
值的方向正确。 您可以将
值替换为
,如下所示:
然后,您可以使用ѭ11来比较排序后的列表:
编辑: 当然可以优化以下内容,但是如果您需要任意嵌套级别的解决方案,那么这是一个开始:
蜂佬渺
感谢您的时间