当前位置:  开发笔记 > 编程语言 > 正文

排序python中的列表列表

如何解决《排序python中的列表列表》经验,为你挑选了1个好方法。

我在python中有一个列表 -

[['C'], ['B'], ['A'], ['C', 'B'], ['B', 'A'], ['A', 'C']]

我想按照以下方式对其进行排序 -

[['A'], ['B'], ['C'], ['A', 'B'], ['A', 'C'], ['B', 'C']]

thefourtheye.. 11

首先对列表中的各个项进行排序,然后根据长度排序排序列表,然后根据实际元素本身对排序列表进行排序

>>> 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).



1> thefourtheye..:

首先对列表中的各个项进行排序,然后根据长度排序排序列表,然后根据实际元素本身对排序列表进行排序

>>> 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).

推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有