Python 按键排序二维列表
我有一个2D列表-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)] 有什么想法
[('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])