怎樣讓Python根據物件的某一元素進行排序?

2021-10-10 13:28:25 字數 1276 閱讀 7301

以前我們對一系列元素排序以公升序或者降序時,可以建立乙個列表,然後使用自帶的sort函式解決公升序倒序問題,那麼現在,如果要物件的某個元素值進行排序?該怎樣獲取它的屬性然後對屬性進行排序呢?其實方法很簡單。python自帶的sort函式有乙個key值可以讓他按照key的指定方法去排序,譬如:sort(key=len)。這時您就可以看到列表以元素的長度進行了排序,物件也是如此,獲取屬性可以使用lambda函式

pai.sort(key =

lambda a: a.name)

在這裡,a代表物件的屬性值

額外補充:__str__函式的作用:

訪問物件預設返回的引數

class

person

:def

__init__

(self,name,city)

: self.name = name

self.city = city

def__str__

(self)

:return

str(self.city)

defmoveto

(self,newcity)

: self.city = newcity

a = person(

'老王'

,'荊州'

)b = person(

'老李'

,'鄭州'

)c = person(

'老劉'

,'廣州'

)d = person(

'老周'

,'福州'

)pai =

[a,b,c,d]

print

('before:'

)for i in pai:

print

('姓名:'

+i.name+

' '+

'城市:'

+i.city)

pai.sort(key =

lambda a: a.name)

print

('after:'

)for i in pai:

print

('姓名:'

+i.name+

' '+

'城市:'

+i.city)

a.moveto(

'鄭州'

)print

(a.name+

'搬去了'

+a.city)

有錯誤的話懇請各位指正,謝謝!

根據表中某列去除重複的行

根據表中某列 或者某些列 去除重複的行 例如有表a,有兩行相同的cardid,我們只要隨機的某一行 drop table a drop table b create table a cardid varchar 100 cardcode varchar 100 insert into a cardi...

根據某條件給GridView符合條件的值畫上刪除線

如博文標題,根據某些條件對gridview控制項中,對符合條件的值畫上刪除線效果。實現這些要求,隻人捕獲到哪些符合要求的資料即可。gridview控制項是在templatefield模版顯示資料,insus.net並沒有使用任一控制項,如label或literal等控制項來呈現資料。稍後在寫onro...

python實現物件列表根據某個屬性排序的方法詳解

對於乙個已有的python list,裡面的內容是一些物件,這些物件有一些相同的屬性值,在一些特定的情況下,需要自己選擇特定的排序,也就是根據某乙個具體的屬性來排序,在網上找了下資料,一般來說有兩種方法,但從根本上來說,還是呼叫了list.sort方法來實現。下面是簡單的測試 片段 coding u...