2017-04-14 101 views
-1

我有以下代碼:如何對包含對象的列表進行排序?

lst = [] 

class DATA: 
    def __init__(self): 
     s = ['',''] 

def fillLst(): 
    d1 = DATA() 
    d1.s[0] = 'zebra' 
    d1.s[1] = 23 

    d2 = DATA() 
    d2.s[0] = 'airplane' 
    d2.s[1] = 435 

    d1 = DATA() 
    d1.s[0] = 'aira' 
    d1.s[1] = 211 


    lst.append(d1) 
    lst.append(d2) 
    lst.append(d3) 

當我打印的清單,我得到如下:

zebra - 23 
aira - 211 
airplane - 435 

現在我希望讓我得到這個輸出對列表進行排序:

aira - 211 
airplane - 435 
zebra - 23 

那麼我怎樣才能對列表中的Data對象進行排序呢?

+2

到目前爲止,您曾試圖解決這個問題?這裏有很多很好的問題,也是一個非常好的官方[如何排序](https://docs.python.org/3/howto/sorting.html)。 –

+0

[如何對列表/元組進行排序(列表/元組)?](http://stackoverflow.com/questions/3121979/how-to-sort-list-tuple-of-lists-tuples) – Vallentin

+0

你發佈的代碼中充斥着拼寫錯誤(缺少'self','d1'而不是'd3' ...),甚至無法執行。請粘貼導致您問題的*確切*代碼! –

回答

3

你可以這樣做:

sorted(lst, key=lambda data: data.s[0]) 

如果你想通過s[0]lst元素進行排序。

sorted函數有一個參數key,您可以指定一個函數,該函數返回要排序的鍵。

sorted function in Python Document

排序(可迭代[,鍵] [,反向])

...

key指定用於提取的比較關鍵一個參數的函數的從每個列表元素:key=str.lower。默認值是None(直接比較元素)。