joh*_*ck1 2 python python-3.x python-3.6
我创建了两个返回已排序列表的函数.它们都作为参数列出了包含Employee Class实例的列表.第一个按名称属性排序,第二个按年龄排序,两者都使用lambda函数
class Employee():
allEmployees = []
def __init__(self, name, age):
self.name = name
self.age = age
Employee.allEmployees.append(self)
def sortEmployeesByName(some_list, name):
return sorted(some_list, key=lambda employee: employee.name)
def sortEmployeesByAge(some_list, age):
return sorted(some_list, key=lambda employee: employee.age)
Run Code Online (Sandbox Code Playgroud)
如何只创建一个函数sortEmployees,我将属性作为第二个参数传递,并使用lambda函数?
例如
def sortEmployess(some_list, attribute):
return sorted(some_list, key=lambda employee: employee.attribute)
Run Code Online (Sandbox Code Playgroud)
你想要的operator.attrgetter,不需要lambdas.这也应该更好:
sorted(some_list, key=operator.attrgetter('name'))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
542 次 |
| 最近记录: |