Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中列表的排序列表_Python_String_Python 2.7_Sorting_Python 2.x - Fatal编程技术网

python中列表的排序列表

python中列表的排序列表,python,string,python-2.7,sorting,python-2.x,Python,String,Python 2.7,Sorting,Python 2.x,我有一个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',

我有一个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)

Superb!hat--key下的另一个技巧是指定一个
参数的函数,该参数用于从每个列表元素中提取比较键。