如何在python中根据不同的对象值对对象列表进行排序?
发布时间:2020-12-20 11:37:57 所属栏目:Python 来源:网络整理
导读:我有一个有几个不同价值观的课程.我希望能够通过不同的值对这些对象的列表进行排序,但我不知道该怎么做.我希望能够为任何值和两个方向(最少到最大,反之亦然)对它们进行排序. 例如,下面是一个示例类,以及一个示例对象列表: class Sample(object): def __init
我有一个有几个不同价值观的课程.我希望能够通过不同的值对这些对象的列表进行排序,但我不知道该怎么做.我希望能够为任何值和两个方向(最少到最大,反之亦然)对它们进行排序.
例如,下面是一个示例类,以及一个示例对象列表: class Sample(object): def __init__(self,name,sampleValue1,sampleValue2): self.name self.value1 = sampleValue1 self.value2 = sampleValue2 def __repr__(self): return self.name # creating sample objects for clarification objectNames = ['A','B','C','D'] values1 = [3,4,1,2] values2 = [1,2,3] sampleObjects = list() for i in xrange(4): obj = Sample(objectNames[i],values1[i],values2[i]) sampleObjects.append(obj) 从每个对象值中对sampleObject进行排序应该产生以下内容.排序应按指定的顺序返回对象列表(下面使用对象名称). value1: [C,D,A,B] value1 reversed: [B,C] value2: [A,C,B] value2 reversed: [B,A] 解决方法
Python内置
sorted 功能有签名:
sorted(iterable[,cmp[,key[,reverse]]]) 和
对于你的情况: >>> sorted(sampleObjects,key=lambda obj: obj.value1) [C,B] >>> sorted(sampleObjects,key=lambda obj: obj.value2) [A,B] (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |