Dan*_*iel 1 python sorting lambda tuples python-3.x
到目前为止,我已经查看了有关该主题的几个问题,但似乎找不到答案。我的目标是按两个标准对 Python 元组列表进行排序。以下代码在问题标题(Python3)中引发错误:
h = [(1, 'ghi'), (2, 'abc'), (2, 'def')]
print(sorted(h, key=lambda tup: (tup[0], -tup[1])))
Run Code Online (Sandbox Code Playgroud)
这里的想法是首先按元组中的整数排序,然后按元组中字符串的逆字母顺序对列表进行排序。我正在寻找如下输出。这也是我希望上面一行打印的内容,但我得到TypeError: Bad Operand Type for Unary -: 'str':
[(1, 'ghi'), (2, 'def'), (2, 'abc')]
Run Code Online (Sandbox Code Playgroud)
我知道我可以编写一个自定义比较器来实现这一点,但是这个站点上的几个答案似乎表明通过传递正确的 lambda 函数可以进行这种排序。我究竟做错了什么?这可能吗?谢谢!
由于在元组中的第一个值是一个数字,你可以否定,与其并给予sorted该reverse=True标志:
h = [(1, 'ghi'), (2, 'abc'), (2, 'def')]
print(sorted(h, key=lambda tup: (-tup[0], tup[1]), reverse=True))
Run Code Online (Sandbox Code Playgroud)
输出:
[(1, 'ghi'), (2, 'def'), (2, 'abc')]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
98 次 |
| 最近记录: |