python中列表的排序列表

沙贾拉勒

我在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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章