Two*_*rts 2 python sorting string
我试图通过int,然后通过字符串对列表中的列表进行排序.
lst = [['Bob', 22], ['Jim', 33], ['Stan', 22]]
lst.sort(key = lambda x: (x[1], -x[0]), reverse = True)
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我试图按照他们的年龄对他们进行排序,然后根据他们的名字对他们进行排序,如果他们的年龄相同,则按降序排列.但是,这会返回一个错误TypeError: bad operand type for unary -: 'str',因为我使用负号来尝试而不是反转String,因此它将保持按升序排序
如何按年龄降序排序,然后按名称升序排序?
它应该返回:
[['Jim', 33], ['Bob', 22], ['Stan', 22]]
Run Code Online (Sandbox Code Playgroud)
直接排序(不反转)并取代年龄:
lst.sort(key=lambda x: (-x[1], x[0]))
Run Code Online (Sandbox Code Playgroud)
这将按年龄降序排序(因为-33将在-22之前排序),然后按名称按字母顺序排序.
演示:
>>> lst = [['Stan', 22], ['Jim', 33], ['Bob', 22]]
>>> sorted(lst, key=lambda x: (-x[1], x[0]))
[['Jim', 33], ['Bob', 22], ['Stan', 22]]
Run Code Online (Sandbox Code Playgroud)
与示例相比,我在我的演示中交换了Stan和Bob,以说明这些名称确实按字母顺序排序,并且不是按照Python的稳定排序按相对顺序排列.
| 归档时间: |
|
| 查看次数: |
241 次 |
| 最近记录: |