我有
之类的对象列表actors = [Person('Raj' ,'Hindi'),
Person('John', 'English'),
Person('Michael' 'Marathi'),
Person('Terry','Hindi'),
Person('Terry', 'Telugu')]
我想根据他们的母语对这些人进行排序。按顺序依次是马拉地语,英语,北印度语,泰卢固语。意味着我想按自定义逻辑而不是按升序或降序对对象进行排序。
我正在使用python 3.7。您能帮我怎么做吗?
答案 0 :(得分:5)
你可以
sorted(actors, key = lambda x: mothertongue_list.index(x.tongue))
如果有的话,您可以通过Person
得到tongue
的母语,并且mothertongue_list
是您想要排序的列表。
答案 1 :(得分:3)
首先创建语言的优先级映射:
priority_map = {v: k for k, v in enumerate(('Marathi', 'English', 'Hindi', 'Telugu'))}
然后将sorted
与自定义键一起使用:
res = sorted(actors, key=lambda x: priority_map[x.tongue])
或者,如果适用,对类的属性进行排序,如this example。