![](/img/trans.png)
[英]How do I sort a list of class instances(objects) based on multiple values of the objects in 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.