python - 为什么覆盖 __lt__ 也会改变大于运算?为什么要用它来排序?
问题描述
我正在做 leetcode(https://leetcode.com/problems/largest-number/),我发现 leetcode 中的解决方案是:
class LargerNumKey(str):
def __lt__(x, y):
return x+y > y+x
class Solution:
def largestNumber(self, nums: List[int]) -> str:
largest_num = ''.join(sorted(map(str, nums), key=LargerNumKey))
return '0' if largest_num[0] == '0' else largest_num
我不确定为什么它会__lt__
在 LargerNumKey 中覆盖。为什么不覆盖__gt__
?为什么在__lt__
使用条件x+y > y+x
?
解决方案
我不确定为什么它会
__lt__
在 LargerNumKey 中覆盖。为什么不覆盖__gt__
?
根据文档 sorted
确实__lt__
用于排序,
__lt__()
在两个对象之间进行比较时,保证使用排序例程。
推荐阅读
- python - python中参数中的符号*ab是什么意思
- python - 来自不同 Pydantic 模型的动态默认值
- php - 需要 MongoDB 聚合帮助
- c# - 在 VS Code 中,如何在调试 ASP.NET 应用程序时中断异常?
- xml - 使用断言比较 XSD 中的 2 个日期
- r - 将数据框与 r 中的 rda 文件合并
- reactjs - 如何在反应中为firebase对象编写类型定义?
- html - 为什么我的 css 文件没有与 django 中的 HTML 文件链接?
- python - 使数组按列唯一的有效方法
- python-3.x - 遍历多行字符串时转到下一行的 Pythonic 方式?