如果我有一个元组列表,第一个是数字,第二个是字符串,例如:
[(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)
答案 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']