2015-09-14 27 views
1

如果我有元組,其中第一個是數量的列表,第二個是一個字符串,例如:如何在python 3中按降序排列並按字母順序排列元組列表?

[(2, 'eye'), (4, 'tail'), (1, 'scarf'), (4,'voice')] 

我怎樣才能在由數量降序排列,並如果是平局數字在任何時候,具有相同數字的單詞應該按字母順序進行分類排序。並返回最終排序的單詞。

從我的例子:

['tail', 'voice', 'eye', scarf'] 

我整理他們的降序排列,但我不知道如何按字母順序subsort它。很高興聽到任何提示和答案。謝謝!

def sorting(list) 
    my_list = [] 
    for x, y in list.items(): 
    my_list+=[(y,x)] 
    sort=sorted(my_list, reverse=True) 

回答

4

可以使用key說法,移動的號碼(第一個元素)到其負面反一部分,並以升序排序該列表。示例 -

In [21]: lst = [(2, 'eye'), (4, 'tail'), (1, 'scarf'), (4,'voice')] 

In [22]: sorted(lst, key = lambda x: (-x[0],x[1])) 
Out[22]: [(4, 'tail'), (4, 'voice'), (2, 'eye'), (1, 'scarf')] 

要得到的順序僅單詞的列表,你可以使用列表理解 -

In [24]: [x[1] for x in sorted(lst, key = lambda x: (-x[0],x[1]))] 
Out[24]: ['tail', 'voice', 'eye', 'scarf'] 
+0

各種排序的問題是在[這裏](HTTPS回答://wiki.python。 org/moin/HowTo/Sorting#Ascending_and_Descending)文件,這也顯示了使用'key'參數的習慣方式。 – nullop