如何使用 运行 期间提供的键对 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 作为 属性 本身。

请帮忙。

使用getattr()

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。