如何使用 运行 期间提供的键对 python 中的对象进行排序?
How to sort a object in python with the key that are provided during run time?
假设有一个 User 对象具有 'id'、'first_name'、'last_name'、'age' 等字段。
我知道我需要根据上面提到的其中一项进行排序 属性 但我只会在 运行 时知道确切的 属性。
我试过的东西
def sortBySomeSpecificKey(key_name):
#key_name is given to the function
Users = sorted(Users, key=lambda x: x.key_name, reverse=True)
这种方法的问题是,它没有采用 key_name 的值,而是采用 key_name 作为 属性 本身。
请帮忙。
Users = sorted(Users, key=lambda x: getattr(x, key_name), reverse=True)
另一种选择是使用 functools.partial
而不是 lambda
from functools import partial
key = partial(gettatr, name=key_name)
Users = sorted(Users, key=key, reverse=True)
附带说明 - 最好添加参数来传递集合,而不是使用全局变量和函数中的 return。
假设有一个 User 对象具有 'id'、'first_name'、'last_name'、'age' 等字段。
我知道我需要根据上面提到的其中一项进行排序 属性 但我只会在 运行 时知道确切的 属性。
我试过的东西
def sortBySomeSpecificKey(key_name):
#key_name is given to the function
Users = sorted(Users, key=lambda x: x.key_name, reverse=True)
这种方法的问题是,它没有采用 key_name 的值,而是采用 key_name 作为 属性 本身。
请帮忙。
Users = sorted(Users, key=lambda x: getattr(x, key_name), reverse=True)
另一种选择是使用 functools.partial
而不是 lambda
from functools import partial
key = partial(gettatr, name=key_name)
Users = sorted(Users, key=key, reverse=True)
附带说明 - 最好添加参数来传递集合,而不是使用全局变量和函数中的 return。