繁体   English   中英

Python - 在列表字符串中列出以sort排序的列表

[英]Python - list in a list string reversing with sort

我试图通过int,然后通过字符串对列表中的列表进行排序。

lst = [['Bob', 22], ['Jim', 33], ['Stan', 22]]
lst.sort(key = lambda x: (x[1], -x[0]), reverse = True)

正如你所看到的,我试图按照他们的年龄对他们进行排序,然后根据他们的名字对他们进行排序,如果他们的年龄相同,则按降序排列。 但是,这会返回一个错误,指出TypeError: bad operand type for unary -: 'str'的错误TypeError: bad operand type for unary -: 'str' ,因为我使用负号来尝试而不是反转String,因此它将保持按升序排序

如何按年龄降序排序,然后按名称升序排序?

它应该返回:

[['Jim', 33], ['Bob', 22], ['Stan', 22]]

直接排序(不反转)并取代年龄

lst.sort(key=lambda x: (-x[1], x[0]))

这将按年龄降序排序(因为-33将在-22之前排序),然后按名称按字母顺序排序。

演示:

>>> lst = [['Stan', 22], ['Jim', 33], ['Bob', 22]]
>>> sorted(lst, key=lambda x: (-x[1], x[0]))
[['Jim', 33], ['Bob', 22], ['Stan', 22]]

与示例相比,我在我的演示中交换了Stan和Bob,以说明这些名称确实按字母顺序排序,并且不是按照Python的稳定排序按相对顺序排列。

 >>> m=[['mahesh',1],['a',2]]
 >>> sorted(m)
 [['a', 2], ['mahesh', 1]]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM