我使用sorted()函数对元组列表进行排序,如下所示。输出按第二个元素(数字)的需要降序排列。但我真正想要的是在一个平局的情况下按升序字母顺序对元组进行排序。
请帮助。
sorted(word_Count, key = itemgetter(1,0), reverse = True)
输出:
[('butter', 2), ('was', 1), ('the', 1), ('of', 1), ('but', 1),
('bought', 1), ('bitter', 1), ('bit', 1), ('betty', 1), ('a', 1)]
谢谢
答案 0 :(得分:2)
您可以将sorted()
功能与lambda
一起用作:
>>> sorted(word_count, key=lambda x: (-x[1], x[0]))
[('butter', 2), ('a', 1), ('betty', 1), ('bit', 1), ('bitter', 1), ('bought', 1), ('but', 1), ('of', 1), ('the', 1), ('was', 1)]
我的lambda
函数将元组作为(-x[1], x[0]))
返回,表示按x[1]
的降序对列表进行排序(-
代表降序),如果匹配排序x[0]
的升序(没有-
符号表示升序)
答案 1 :(得分:0)
您可以使用list.sort
两次,因为根据list.sort
的文档字符串,它已经到位:
L.sort(cmp=None, key=None, reverse=False) -- stable sort *IN PLACE*;
因此,要对列表进行排序,您可以
>>> word_count.sort()
>>> word_count.sort(key=lambda x: x[1], reverse=True)
>>> print(word_count)
[('butter', 2), ('a', 1), ('betty', 1), ('bit', 1), ('bitter', 1),
('bought', 1), ('but', 1), ('of', 1), ('the', 1), ('was', 1)]
请确保先按字母顺序排序,然后按照第二个键排序。