2017-03-07 81 views
-1

我需要根據元素的數量對列表中的列表進行排序。 下面是我的一些列表:python根據元素數量排序列表

['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'] 

名單是從短到大排序,根據他們的元素的數量。

有人可以幫忙嗎?...我做了一些研究,但找不到解決方法。非常感謝。有字符串的長度的解決方案,但在列表

+1

'排序(yourlist,關鍵= LEN )' – DyZ

+0

https://wiki.python.org/moin/HowTo/Sorting#Key_Functions – Ryan

+0

請在發佈問題之前進行最低程度的研究,例如將您打算使用的標題粘貼到Google搜索中。 – TigerhawkT3

回答

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']] 
+0

我沒有列表中的列表。我必須創建一個列表清單嗎?我希望找到一個更直接的解決方案 – norpa

+0

@norpa:那你有他們,那麼? – Ryan

+0

@norpa列表可以在任何迭代中使用。這包括列表,元組和生成器。我不確定你的意思是「直截了當」。你目前儲存的清單是什麼? – cdhowie

-1

你可以創建列表的列表,然後進行排序,如下所示:

a = ['RB', 'RB', 'VBD', 'TO', 'PRP', 'RB'] 
b = ['PRP', 'RB', 'RB', 'JJ'] 

combo = [a,b] 

sorted_list = sorted(combo, key=len) 
相關問題