我正在生成员工和经理的列表。但是,我在尝试按姓氏对它们排序后得到了这个奇怪的输出(我的初始类employee只包含“name”,但没有划分为名字和姓氏)。然后,我用[1]表示姓氏)。我的代码有什么问题,因为我看不到我的员工名单。在
class Employee:
def __init__(self, name, socialSecurityNumber, salary):
"""
Set name, socialSecurityNumber, and salary to itself.
"""
self.name = name
self.socialSecurityNumber = socialSecurityNumber
self.salary = salary
employeeList = []
employee1 = Employee("Banny Chu", "777-88-9999", 45000)
employee2 = Employee("Luffy Monkey", "555-66-9999", 32000)
employee3 = Employee("Zoro Nonoroa", "222-00-3333", 37000)
manager1 = Manager("Scalt Haight", "444-33-1111", 60000, "Lab", 2300)
manager2 = Manager("Kapu Ro", "333-44-2222", 65000, "General", 2600)
manager3 = Manager("Nami Swan", "111-77-6666", 80000, "HR", 3000)
employeeList.append(employee1)
employeeList.append(employee2)
employeeList.append(employee3)
employeeList.append(manager1)
employeeList.append(manager2)
employeeList.append(manager3)
print (sorted(employeeList, key=lambda employee: employee.name[1].lower()))
输出如下(奇怪的输出,因为我无法看到正确格式的employeeList,即使我键入print(employeeList)并给出了与下面相同的格式。在
^{pr2}$我应该怎样修改它,以便我可以清楚地看到我的排序列表?在
你错过了一点,sorted返回根据你发送的条件排序的列表的排列。它不会自动返回你排序的键,如果那是你所期待的?在
输出(我很懒,只复制粘贴了3名员工):
^{pr2}$您还缺少一个拆分,因为您将名称保存在一个字符串中。索引单个字符串将返回字符串中该位置的单个字符。在
如果您的目标不是只打印出姓氏,那么您必须重写}方法。(请阅读here方法之间的确切区别。)
__str__
或{您忘记在键函数中拆分名称:
employee.name.split(' ')[1]
。 Python对排序后的列表调用__repr__
,该列表在开头和结尾打印“[”和“]”,然后对每个列表元素调用__repr__
。默认的__repr__
打印对象类型和地址。如果您想看到其他东西,您必须给python另一个__repr__
来调用。在默认情况下,用户定义的对象将表示为内存中某个位置的类实例:
您需要在Employee类中添加用于对象表示的特殊方法:
^{pr2}$相关问题 更多 >
编程相关推荐