首页 > 解决方案 > 为什么覆盖 __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

标签: pythonpython-3.x

解决方案


我不确定为什么它会__lt__在 LargerNumKey 中覆盖。为什么不覆盖__gt__

根据文档 sorted确实__lt__用于排序,

__lt__()在两个对象之间进行比较时,保证使用排序例程。


推荐阅读