【发布时间】:2019-10-08 08:46:10
【问题描述】:
我有这种类型的课程
class Challenge():
difficulty = Field(type=float)
category = Field(type=str)
我有一个挑战对象列表,我想以自定义方式排序:我想使用自定义顺序按难度排序,然后每个难度我想按类别对对象进行排序,使用不同的自定义按每个难度排序。
我已经有一个字典,键是有序的困难,每个困难都有有序的类别列表。我需要将此排序应用于我的列表,但我不知道如何将这些条件应用于排序。
我达到了这一点:
found_challenges.sort(key=lambda x: (x.difficulty, x.category))
显然,这并没有按照我想要的方式排序。如何将这些自定义条件应用于列表排序?
例子:
ch_1 = Challenge(difficulty=1.0, category='one')
ch_2 = Challenge(difficulty=1.0, category='two')
ch_3 = Challenge(difficulty=2.0, category='one')
ch_4 = Challenge(difficulty=2.0, category='two')
排序字典是
{
2.0: ['one', 'two'],
1.0: ['two', 'one']
}
所以顺序应该是:
[ch_3, ch_4, ch_2, ch_1]
【问题讨论】: