python 按照物件某一屬性排序

2021-10-02 08:26:51 字數 1632 閱讀 1131

工作中經常需要用到排序,單純的數字排序還好說,但是有時候要按照物件的某一屬性對物件進行排序,這時候會稍微麻煩點,不過 python 中有現成的方法解決這種窘境。

1.呼叫 list 排序方法

不 bb,直接上**,總共三個例子

1.普通列表

2.複雜列表

3.物件排序

class person(object):

def __init__(self, name, age):

self.name = name

self.age = age

if __name__ == '__main__':

a = (0, 8, 2, 6, 3)

b = [('a', 12), ('b', 12), ('c', 1), ('d', 13), ('e', 2)]

person_list = [person('q', 2), person('w', 1), person('e', 3), person('r', 6)]

a.sort(cmp=none, key=none, reverse=true) # reverse 引數為 true 時逆向排序

print a

b.sort(key=lambda x: x[1])

print b

person_list.sort(key=lambda x: x.age)

for i in person_list:

print i.age

結果:

[8, 6, 3, 2, 0]

[('c', 1), ('e', 2), ('a', 12), ('b', 12), ('d', 13)]12

36

2.呼叫 sorted 方法

和上面一樣的例子,其實 sorted 方法和 list.sort 使用方法幾乎一樣

class person(object):

def __init__(self, name, age):

self.name = name

self.age = age

if __name__ == '__main__':

a = [0, 8, 2, 6, 3]

b = [('a', 12), ('b', 12), ('c', 1), ('d', 13), ('e', 2)]

person_list = [person('q', 2), person('w', 1), person('e', 3), person('r', 6)]

print sorted(a)

print sorted(b, key=lambda x: x[1])

m = sorted(person_list, key=lambda x: x.age, reverse=true)

for i in m:

print i.age

結果:

[0, 2, 3, 6, 8]

[('c', 1), ('e', 2), ('a', 12), ('b', 12), ('d', 13)]63

21

3.結語

非常複雜的排序就需要自己寫了,一般上面那個方法用一下就基本滿足需求了。

LinkedList中將物件按照某一屬性排序

例如,鍊錶 treelist 宣告如下 linkedlisttreelist new linkedlist 其中 treenode 是自己定義的乙個類,類中有乙個 int 型別的 value 屬性,若要以 treenode 中的 value 屬性排序,可以如下實現 1 新增乙個類,實現 compar...

JS刪除物件中的某一屬性

js如何刪除物件中的某一屬性 var obj delete obj.name true typeof obj.name undefined通過delete操作符,可以實現對物件屬性的刪除操作,返回值是布林 可以刪除其他東西嗎 1.變數 var name zs 已宣告的變數 delete name f...

根據物件陣列的某一屬性排序

今天做需求時候靈光一閃,想到了乙個很簡單的給物件陣列排序的方法,敲黑板 此排序非普通大眾排序 需求描述 有乙個物件陣列,大概長這樣 var bardata 渲染頁面時候呢,我們需要按照特定的順序來取資料並渲染。假如是按照name屬性來排序,並且順序為 掃碼e貸,誠e貸,稅源e貸,超值e貸,菸草e貸 ...