如何对包含对象的列表进行排序?

时间:2017-04-14 17:36:35

标签: python python-2.7 python-3.x

我有以下代码:

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对象进行排序呢?

1 个答案:

答案 0 :(得分:3)

你可以这样做:

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

如果您想按lsts[0]中的元素进行排序。

sorted函数有一个参数key,您可以指定一个返回要排序的键的函数。

sorted function in Python Document

  

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

     

...

     

key指定一个参数的函数,该函数用于从每个列表元素中提取比较键:key=str.lower。默认值为None(直接比较元素)。