Python 按键排序二维列表

Python 按键排序二维列表,python,list,sorting,Python,List,Sorting,我有一个2D列表- [('John', 7), ('Max', 10), ('Sarah', 10), ('Tara', 7)] 我想先按数字降序(最高)然后按名称(字母顺序)排序 我用过这个代码- highestscore = sorted(highestscore, key = lambda x: (x[1],x[0]), reverse=True) 但我得到了结果 [('Sarah', 10), ('Max', 10), ('Tara', 7), ('John', 7)] 有什么想法

我有一个2D列表-

[('John', 7), ('Max', 10), ('Sarah', 10), ('Tara', 7)]
我想先按数字降序(最高)然后按名称(字母顺序)排序

我用过这个代码-

highestscore = sorted(highestscore, key = lambda x: (x[1],x[0]), reverse=True)
但我得到了结果

[('Sarah', 10), ('Max', 10), ('Tara', 7), ('John', 7)]

有什么想法吗?

你需要把降序(分数)和升序(名字)混合起来。您可以使用-
x[1]
而不是
reverse=True

highestscore = sorted(highestscore, key = 
    lambda x: (int(-x[1]), x[0].lower()))

我还添加了
lower()
,使字母顺序不区分大小写。结果是
[('Max',10),('Sarah',10),('John',7),('Tara',7)]

您需要将降序(分数)与升序(名称)混合使用。您可以使用-
x[1]
而不是
reverse=True

highestscore = sorted(highestscore, key = 
    lambda x: (int(-x[1]), x[0].lower()))

我还添加了
lower()
,使字母顺序不区分大小写。结果是
[('Max',10),('Sarah',10),('John',7),('Tara',7)]

您需要将降序(分数)与升序(名称)混合使用。您可以使用-
x[1]
而不是
reverse=True

highestscore = sorted(highestscore, key = 
    lambda x: (int(-x[1]), x[0].lower()))

我还添加了
lower()
,使字母顺序不区分大小写。结果是
[('Max',10),('Sarah',10),('John',7),('Tara',7)]

您需要将降序(分数)与升序(名称)混合使用。您可以使用-
x[1]
而不是
reverse=True

highestscore = sorted(highestscore, key = 
    lambda x: (int(-x[1]), x[0].lower()))
我还添加了
lower()
,使字母顺序不区分大小写。结果是
[('Max',10),('Sarah',10),('John',7),('Tara',7)]

试试这个怎么样:

a = [('John', 7), ('Max', 10), ('Sarah', 10), ('Tara', 7)]
a.sort(key=lambda x: x[0])
a.sort(key=lambda x: x[1], reverse=True)
结果是:

[('Max', 10), ('Sarah', 10), ('John', 7), ('Tara', 7)]
参考资料:

试试这个怎么样:

a = [('John', 7), ('Max', 10), ('Sarah', 10), ('Tara', 7)]
a.sort(key=lambda x: x[0])
a.sort(key=lambda x: x[1], reverse=True)
结果是:

[('Max', 10), ('Sarah', 10), ('John', 7), ('Tara', 7)]
参考资料:

试试这个怎么样:

a = [('John', 7), ('Max', 10), ('Sarah', 10), ('Tara', 7)]
a.sort(key=lambda x: x[0])
a.sort(key=lambda x: x[1], reverse=True)
结果是:

[('Max', 10), ('Sarah', 10), ('John', 7), ('Tara', 7)]
参考资料:

试试这个怎么样:

a = [('John', 7), ('Max', 10), ('Sarah', 10), ('Tara', 7)]
a.sort(key=lambda x: x[0])
a.sort(key=lambda x: x[1], reverse=True)
结果是:

[('Max', 10), ('Sarah', 10), ('John', 7), ('Tara', 7)]

参考资料:

您的排序没有问题。。。之后需要使用贴图变换元素

highestscore = sorted(highestscore, key = lambda x: (x[1],x[0]), reverse=True)

scores = [ ( x[ 1 ], x[ 0 ] ) for x in highestscore ]
结果将是

[(10, 'Max'), (10, 'Sarah'), (7, 'John'), (7, 'Tara')]

你没事吧。。。之后需要使用贴图变换元素

highestscore = sorted(highestscore, key = lambda x: (x[1],x[0]), reverse=True)

scores = [ ( x[ 1 ], x[ 0 ] ) for x in highestscore ]
结果将是

[(10, 'Max'), (10, 'Sarah'), (7, 'John'), (7, 'Tara')]

你没事吧。。。之后需要使用贴图变换元素

highestscore = sorted(highestscore, key = lambda x: (x[1],x[0]), reverse=True)

scores = [ ( x[ 1 ], x[ 0 ] ) for x in highestscore ]
结果将是

[(10, 'Max'), (10, 'Sarah'), (7, 'John'), (7, 'Tara')]

你没事吧。。。之后需要使用贴图变换元素

highestscore = sorted(highestscore, key = lambda x: (x[1],x[0]), reverse=True)

scores = [ ( x[ 1 ], x[ 0 ] ) for x in highestscore ]
结果将是

[(10, 'Max'), (10, 'Sarah'), (7, 'John'), (7, 'Tara')]

不改变清单?我的意思是,在我看来,输出结果是正确的,Sarah和Max的long得分最高,然后是Tara和John。与其将
sorted()
的结果重新分配给同一个变量,不如直接排序:
highestscore.sort(key=lambda x:(-x[1],x[0])
不反转列表?我的意思是,在我看来,输出结果是正确的,Sarah和Max的long得分最高,然后是Tara和John。与其将
sorted()
的结果重新分配给同一个变量,不如直接排序:
highestscore.sort(key=lambda x:(-x[1],x[0])
不反转列表?我的意思是,在我看来,输出结果是正确的,Sarah和Max的long得分最高,然后是Tara和John。与其将
sorted()
的结果重新分配给同一个变量,不如直接排序:
highestscore.sort(key=lambda x:(-x[1],x[0])
不反转列表?我的意思是,在我看来,输出结果是正确的,Sarah和Max的long得分最高,然后是Tara和John。与其将
sorted()
的结果重新分配给同一个变量,不如直接排序:
highestscore.sort(key=lambda x:(-x[1],x[0])