簡體   English   中英

如何在python中根據不同的對象值對對象列表進行排序?

[英]How to sort a list of objects based on different object values in python?

我有一個有幾個不同價值觀的課程。 我希望能夠通過不同的值對這些對象的列表進行排序,但我不知道該怎么做。 我希望能夠為任何值和兩個方向(最少到最大,反之亦然)對它們進行排序。

例如,下面是一個示例類,以及一個示例對象列表:

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,4,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,A,D,C]
value2: [A,C,D,B]
value2 reversed: [B,D,C,A]

Python內置的sorted函數有簽名:

sorted(iterable[, cmp[, key[, reverse]]])

key指定一個參數的函數,該函數用於從每個列表元素中提取比較鍵

對於你的情況:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM