【发布时间】:2021-04-18 00:19:31
【问题描述】:
到目前为止,我已经查看了有关此主题的几个问题,但似乎找不到答案。我的目标是按两个标准对元组的 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 函数可以进行这种排序。我究竟做错了什么?这可能吗?谢谢!
【问题讨论】:
标签: python python-3.x sorting lambda tuples