You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对含多属性的Fish类实例按指定规则排序?

按size降序、name升序排序Fish实例的解决方案

完整实现代码

class Fish:
    def __init__(self, size, name):
        self.size: int = int(size)
        self.name: str = name

def main():
    fish_list = []
    # 读取多行输入,直到输入结束
    while True:
        try:
            line = input().strip()
            if not line:
                continue
            # 拆分每行的name和size
            name, size = line.split()
            fish_list.append(Fish(size, name))
        except EOFError:
            break
    
    # 按规则排序:size降序,size相同则name升序
    sorted_fish = sorted(fish_list, key=lambda x: (-x.size, x.name))
    
    # 输出排序结果
    for fish in sorted_fish:
        print(f"{fish.name} {fish.size}")

if __name__ == "__main__":
    main()

关键逻辑说明

  • 输入读取:通过循环读取每行输入,跳过空行,拆分出name和size后创建Fish实例并加入列表。
  • 排序规则实现:使用sorted()函数的key参数,传入lambda表达式lambda x: (-x.size, x.name):
    • -x.size:利用sorted()默认的升序排序特性,取size的负值等价于按size降序排列。
    • x.name:当多个实例size相同时,按name的字母升序排序(字符串默认按ASCII码顺序比较,符合常规字母顺序要求)。
  • 结果输出:遍历排序后的列表,按name size格式打印每个实例的属性。

测试验证

输入示例:

d 3
a 1
c 2 
b 1

运行代码后输出:

d 3
c 2
a 1
b 1

完全符合预期的排序规则。

内容的提问来源于stack exchange,提问作者ashley jacob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 11:05:29