如何按降序排序元组列表,并在python 3中按字母顺序排序?

时间:2015-09-14 12:13:22

标签: python sorting python-3.x

如果我有一个元组列表,第一个是数字,第二个是字符串,例如:

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

如何按数字降序排序,如果在任何一点都有数字,那么具有相同数字的单词应按字母顺序排序。并返回最终排序的单词。

从我的例子:

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

我按降序对它们进行了排序,但我不知道如何按字母顺序对它进行分类。很高兴听到任何暗示和回答。谢谢!

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

1 个答案:

答案 0 :(得分:5)

您可以使用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')]

要仅获得该顺序中的单词列表,您可以使用list comprehension -

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