gpt4 book ai didi

Python 排序 : Bad Operand Type for Unary -: 'str'

转载 作者:行者123 更新时间:2023-12-05 08:47:39 25 4
gpt4 key购买 nike

到目前为止,我已经回顾了几个关于这个主题的问题,但我似乎找不到答案。我的目标是按两个标准对 Python 元组列表进行排序。以下代码在问题标题中抛出错误(Python3):

h = [(1, 'ghi'), (2, 'abc'), (2, 'def')]
print(sorted(h, key=lambda tup: (tup[0], -tup[1])))

这里的想法是首先按元组中的整数排序,然后按元组中字符串的逆字母顺序对列表进行排序。我正在寻找如下所示的输出。这也是我希望上面的行打印的内容,但我得到的是 TypeError: Bad Operand Type for Unary -: 'str':

[(1, 'ghi'), (2, 'def'), (2, 'abc')]

我知道我可以编写一个自定义比较器来实现这一点,但该站点上的几个答案似乎表明可以通过传递正确的 lambda 函数进行这种排序。我究竟做错了什么?这可能吗?谢谢!

最佳答案

由于元组中的第一个值是一个数字,您可以取反并给 sorted reverse=True 标志;这将产生按数字顺序对数字进行排序的预期效果(反向排序否定数字给出与对原始数字排序相同的结果)和按反向字母顺序排列的字符串。例如:

h = [(1, 'ghi'), (2, 'abc'), (2, 'def')]
print(sorted(h, key=lambda tup: (-tup[0], tup[1]), reverse=True))

输出:

[(1, 'ghi'), (2, 'def'), (2, 'abc')]

关于Python 排序 : Bad Operand Type for Unary -: 'str' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67144145/

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