gpt4 book ai didi

Python - 列表中的列表字符串与排序反转

转载 作者:行者123 更新时间:2023-11-28 20:22:59 24 4
gpt4 key购买 nike

我正在尝试按 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',因为我使用负号来尝试不反转字符串,以便它保持排序按升序排列

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

它应该返回:

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

最佳答案

直接排序(而不是倒序)并取反 age:

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 的稳定排序中的相对顺序。

关于Python - 列表中的列表字符串与排序反转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21805872/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com