mrs*_*uid 3 python sorting tuples list
标题很混乱,但问题很简单。
说我有一个像这样的元组列表:
d = [('said', 12), ('that', 12), ('electricity', 11), ('was', 10), ('the', 51), ('zealand', 9), ('for', 13), ('new', 12), ('power', 14), ('transmission', 14), ('and', 9)]
Run Code Online (Sandbox Code Playgroud)
我想对列表进行排序,以便按值降序对其进行排序。但是,我希望领带按键字母顺序排序。
即,对于上面的列表,“新西兰”和“和”都具有相同的值。但是在排序的列表输出中,我希望“和”出现在“新西兰”之前。
我试着做
d.sort(key=operator.itemgetter(1, 0), reverse=True)
print(d)
Run Code Online (Sandbox Code Playgroud)
这给了我输出
[('the', 51), ('transmission', 14), ('power', 14), ('for', 13), ('that', 12), ('said', 12), ('new', 12), ('electricity', 11), ('was', 10), ('zealand', 9), ('and', 9)]
Run Code Online (Sandbox Code Playgroud)
但是,元组('zealand', 9)出现('and', 9)在现实中之前,而我想出('and', 9)现在之前,('zealand', 9)因为“和”按字母顺序在“新西兰”之前。
什么是做这种类型的排序的最佳方法,在这种排序中,值的一个方向是反向的,而键的方向不是反向。
如果您需要更多信息,请告诉我。
感谢您的时间。
在这种情况下,问题很容易...
L.sort(key = lambda x : (-x[1], x[0]))
Run Code Online (Sandbox Code Playgroud)
我返回一个元组作为排序键,其中第一个值与value相反,第二个值是字符串。这样,排序将按值降序,按值关系按字母顺序升序。