python:具有多个值的排序列表

时间:2015-11-06 03:00:04

标签: python sorting

我有一个CrewRecords对象列表。

crew_record = list[<CrewRecords instance at 0x617bb48>, 
                   <CrewRecords instance at 0x617b9e0>,
                   <CrewRecords instance at 0x5755680>]

其中:

class CrewRecords():
    def __init__(self):
        self.crew_id                = None
        self.crew_date_of_hire      = None       
        self.crew_points            = None
    def crew_attributes(self,crew_bag):
        ''' populate the values of crew with some values'''
        self.crew_id                = crew_bag.crew.id()
        self.crew_date_of_hire      = crew_bag.crew.date_of_hire()
        self.crew_points            = crew_bag.crew_points()

现在,我想在python中编写一个函数,它接受3个参数并按提供的首选项对列表进行排序。即。

如果用户输入要排序的值 选项:

  1. points,date_of_hire,id
  2. points,id,date_of_hire
  3. date_of_hire,points,id 等等。根据用户输入排序。
  4. 然后,函数应该能够使用sort.i.e进行排序。 如果选择第一个选项,则按点对所有工作人员进行排序,如果2个工作人员具有相同的点数,则按date_of_hire排序,如果date_of_hire也相同,则按ID排序。

    此外,稍后如果排序选项增加,就像用户想要通过一些额外选项(例如按名称)排序一样,我们也应该能够轻松扩展排序标准。

1 个答案:

答案 0 :(得分:1)

使用key关键字sorted,即

return sorted(crew_record, key=attrgetter('crew_points', 'crew_date_of_hire', 'crew_id'))

会解决你的第一点。