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

如何实现Person列表按姓名排序并同步排序每个对象的hobbies列表?

解决方法

你需要在排序人员列表之前,先对每个Person对象的hobbies列表进行排序,同时修正代码中属性名的笔误(x.names应该是x.name)。

修改后的代码

def sort_people_and_hobbies(people: list) -> list:
    # 遍历每个Person,对hobbies进行原地字母序排序
    for p in people:
        p.hobbies.sort()
    # 按姓名的字母序排序人员列表并返回
    return sorted(people, key=lambda x: x.name)

代码说明

  1. hobbies排序:调用p.hobbies.sort()会原地修改每个Person对象的hobbies列表,使其按字母序排列,这符合你预期的print(person1.hobbies)输出结果。
  2. 人员列表排序:使用sorted()函数,以x.name为排序键,返回按姓名字母序排列的新列表。
  3. 笔误修正:原代码中的x.names是错误的,Person类的属性是name,需改为x.name。

可选方案(不修改原对象)

如果你不想修改原Person对象的hobbies,可以创建新的Person实例来保存排序后的hobbies:

def sort_people_and_hobbies(people: list) -> list:
    processed = []
    for p in people:
        # 创建新Person,hobbies用排序后的新列表
        processed.append(Person(p.name, sorted(p.hobbies)))
    # 按姓名排序
    return sorted(processed, key=lambda x: x.name)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 12:35:19