Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如果第一个属性相同,则按多个属性对对象列表进行排序_Python_List_Sorting - Fatal编程技术网

Python 如果第一个属性相同,则按多个属性对对象列表进行排序

Python 如果第一个属性相同,则按多个属性对对象列表进行排序,python,list,sorting,Python,List,Sorting,我想按到达时间对先到先得的调度算法进行排序。但是,如果多个到达时间是相同的值,我想按PID对它们进行排序 因此,有了投入 PID、到达时间、突发时间 3,0,3 2,0,5 1,9,8 4,10,6 它应该产生 PID、到达时间、突发时间 2,0,5 3,0,3 1,9,8 4,10,6 类进程: definit(自我、ID、到达时间、爆发时间): self.ID=ID self.ArrivalTime=到达时间 self.BurstTime=BurstTime 这是我用来按到达时间排序的lam

我想按到达时间对先到先得的调度算法进行排序。但是,如果多个到达时间是相同的值,我想按PID对它们进行排序

因此,有了投入

PID、到达时间、突发时间
3,0,3
2,0,5
1,9,8
4,10,6

它应该产生 PID、到达时间、突发时间
2,0,5
3,0,3
1,9,8
4,10,6

类进程:
definit(自我、ID、到达时间、爆发时间):
self.ID=ID
self.ArrivalTime=到达时间
self.BurstTime=BurstTime

这是我用来按到达时间排序的lambda函数

sortedProcesses=已排序(进程,键=λx:x.ArrivalTime)


如何主要按到达时间排序,如果到达时间相同,如何按PID排序?

您可以使用元组作为排序键,以便使lambda函数返回一个元组,其中优先级较高的排序顺序字段首先出现

 sortedProcesses = sorted(processes, key=lambda x: (x.x.ArrivalTime,x.ID))
如果需要对其中一个属性进行反向排序,可以利用Python的排序是稳定的这一事实。为此,首先按最低优先级字段排序,然后按较高优先级字段排序结果

例如,如果您希望项目以反向到达时间但以升序ID顺序到达相同的到达时间:

 sortedProcesses = sorted(processes, key=lambda x: x.ID)
 sortedProcesses = sorted(sortedProcesses, key=lambda x: x.ArrivalTime, reverse=True)
key=lambda x:(x.ArrivalTime,x.ID)