[英]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.