按长度排序列表列表时跟踪原始标记

时间:2017-06-21 22:09:00

标签: python list sorting nested-lists

您可以按长度对列表列表进行排序,如下所示:

l1 = [1,2,3]
l2 = [1,2,3]
l3 = [1,2]
lists = [l1, l2, l3]
sorted_lists = sorted(lists, key=len)
print sorted_lists  #[[1,2], [1,2,3], [1,2,3]]

我无法弄清楚如何跟踪这些指标,然后将sorted_lists的内容与原始列表名称l1l2和{{1 }}

This接近,但我不确定按长度排序时如何实施解决方案。

2 个答案:

答案 0 :(得分:8)

很有可能。只需稍微修改一下密钥,即可指定要应用len的正确谓词。

>>> lists = [l1, l2, l3]
>>> lists = sorted(enumerate(lists), key=lambda x: len(x[1])) # enumerate is a tuple of (index, elem), sort by len(elem)
[(2, [1, 2]), (0, [1, 2, 3]), (1, [1, 2, 3])]

答案 1 :(得分:1)

使用arg.sort() numpylist comprehension可以采用其他方式:

import numpy

new_list = [(index, lists[index])for index in numpy.argsort(lists)]
print(new_list)

输出:

[(2, [1, 2]), (0, [1, 2, 3]), (1, [1, 2, 3])]