我需要根据元素的数量对集合中的列表进行排序。 以下是我的一些清单:
['RB', 'RB', 'VBD', 'TO', 'PRP', 'RB']
['PRP', 'RB', 'RB', 'JJ']
['PRP', 'MD', 'RB', 'VB', 'PRP$', 'NN', 'RB', 'IN', 'NN']
['RB', 'DT', 'NN']
['PRP', 'RB', 'VBP', 'PRP']
['PRP', 'RB', 'VBD', 'IN', 'DT']
['MD', 'RB', 'VB', 'IN', 'NNP', 'RB']
['RB', 'CD']
这是寻求的输出:
['RB', 'CD']
['RB', 'DT', 'NN']
['PRP', 'RB', 'RB', 'JJ']
['PRP', 'RB', 'VBP', 'PRP']
['PRP', 'RB', 'VBD', 'IN', 'DT']
['MD', 'RB', 'VB', 'IN', 'NNP', 'RB']
['RB', 'RB', 'VBD', 'TO', 'PRP', 'RB']
['PRP', 'MD', 'RB', 'VB', 'PRP$', 'NN', 'RB', 'IN', 'NN']
根据列表中元素的数量,列表从最短到最大排序。
有人可以帮忙吗?...我做了一些研究,但找不到我的方法。非常感谢。有字符串长度的解决方案,但不是列表中的元素
答案 0 :(得分:2)
使用sorted()
函数,使用每个元素的长度作为排序键:
sorted(the_list, key=len)
示例:
>>> the_list = [
... ['RB', 'RB', 'VBD', 'TO', 'PRP', 'RB'],
... ['PRP', 'RB', 'RB', 'JJ'],
... ['PRP', 'MD', 'RB', 'VB', 'PRP$', 'NN', 'RB', 'IN', 'NN'],
... ['RB', 'DT', 'NN'],
... ['PRP', 'RB', 'VBP', 'PRP'],
... ['PRP', 'RB', 'VBD', 'IN', 'DT'],
... ['MD', 'RB', 'VB', 'IN', 'NNP', 'RB'],
... ['RB', 'CD']
... ]
>>> sorted(the_list, key=len)
[['RB', 'CD'], ['RB', 'DT', 'NN'], ['PRP', 'RB', 'RB', 'JJ'], ['PRP', 'RB', 'VBP', 'PRP'], ['PRP', 'RB', 'VBD', 'IN', 'DT'], ['RB', 'RB', 'VBD', 'TO', 'PRP', 'RB'], ['MD', 'RB', 'VB', 'IN', 'NNP', 'RB'], ['PRP', 'MD', 'RB', 'VB', 'PRP$', 'NN', 'RB', 'IN', 'NN']]
答案 1 :(得分:-1)
您可以创建列表列表,然后按以下方式排序:
a = ['RB', 'RB', 'VBD', 'TO', 'PRP', 'RB']
b = ['PRP', 'RB', 'RB', 'JJ']
combo = [a,b]
sorted_list = sorted(combo, key=len)