我在python中有一个列表-
[['C'], ['B'], ['A'], ['C', 'B'], ['B', 'A'], ['A', 'C']]
我想将其排序如下-
[['A'], ['B'], ['C'], ['A', 'B'], ['A', 'C'], ['B', 'C']]
首先对列表中的各个项目进行排序,然后根据长度然后根据实际元素本身对排序后的列表进行排序,如下所示
>>> data = [['C'], ['B'], ['A'], ['C', 'B'], ['B', 'A'], ['A', 'C']]
>>> sorted((sorted(item) for item in data), key=lambda x: (len(x), x))
[['A'], ['B'], ['C'], ['A', 'B'], ['A', 'C'], ['B', 'C']]
之所以可行,是因为默认情况下,字符串列表将按字典顺序排序。在您的情况下,当对内部列表进行排序时,首先根据列表的长度对外部列表进行排序,如果它们相同,则将使用字符串本身的实际元素进行比较。
这可以逐步理解。最初的单个元素排序结果是
>>> [sorted(item) for item in data]
[['C'], ['B'], ['A'], ['B', 'C'], ['A', 'B'], ['A', 'C']]
现在,我们需要首先基于长度对它进行排序,然后再对元素进行排序。因此,我们将自定义函数传递给外部排序函数lambda x: (len(x), x)
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句