Python元组排序列表按值反向和按密钥非反向(两种不同方式)

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)因为“和”按字母顺序在“新西兰”之前。

什么是做这种类型的排序的最佳方法,在这种排序中,值的一个方向是反向的,而键的方向不是反向。

如果您需要更多信息,请告诉我。

感谢您的时间。

650*_*502 7

在这种情况下,问题很容易...

L.sort(key = lambda x : (-x[1], x[0]))
Run Code Online (Sandbox Code Playgroud)

我返回一个元组作为排序键,其中第一个值与value相反,第二个值是字符串。这样,排序将按值降序,按值关系按字母顺序升序。