Ley*_*yla 1 python sorting python-3.x
如果我有一个元组列表,第一个是数字,第二个是字符串,例如:
[(2, 'eye'), (4, 'tail'), (1, 'scarf'), (4,'voice')]
Run Code Online (Sandbox Code Playgroud)
如何按数字降序排序,如果在任何点都有数字,那么具有相同数字的单词应按字母顺序排序.并返回最终排序的单词.
从我的例子来看:
['tail', 'voice', 'eye', scarf']
Run Code Online (Sandbox Code Playgroud)
我按降序对它们进行了排序,但我不知道如何按字母顺序对它进行分类.很高兴听到任何暗示和回答.谢谢!
def sorting(list)
my_list = []
for x, y in list.items():
my_list+=[(y,x)]
sort=sorted(my_list, reverse=True)
Run Code Online (Sandbox Code Playgroud)
您可以使用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')]
Run Code Online (Sandbox Code Playgroud)
要仅获得该顺序中的单词列表,您可以使用列表理解 -
In [24]: [x[1] for x in sorted(lst, key = lambda x: (-x[0],x[1]))]
Out[24]: ['tail', 'voice', 'eye', 'scarf']
Run Code Online (Sandbox Code Playgroud)