加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

如何在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]]])

key specifies a function of one argument that is used to extract a comparison key from each list element

对于你的情况:

>>> sorted(sampleObjects,key=lambda obj: obj.value1)
[C,B]
>>> sorted(sampleObjects,key=lambda obj: obj.value2)
[A,B]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读