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

2022-10-04 17:24:13 字數 1462 閱讀 2503

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

#coding:utf-8

class person:

def __init__(self,name,age,salary):

self.name = name

self.age = age

self.salary = salary

obj_list = [

person('juneys',20,30000),

person('sam',20,20000),

person('eddy',22,25000),

person('eagle',25,10000)

]#第一種方法

obj_list.sort(cmp=none, key=lambda x:x.salary, reverse=false)

print '***********第一種方法********************jspndjivjx***'

for obj in obj_list:

print obj.name,程式設計客棧obj.salary

# 第二種方法,更適合於大量資料的情況.

try:

import operator

except importerror:

cmpfun= lambda x: x.count # use a lambda if no operator module

else:

cmpfun= operator.attrgetter("salary") # use operator since it's faster than lambda

obj_list.sort(key=cmpfun, reverse=true)

print '***********第二種方法***********************'

for obj in obj_list:

jspndjivjxprint obj.name,obj.salary

構造了乙個 person 類, 然後初始化一些物件放入obj_list 中, 然後想根據工資進行排序,方法一與方法二分別實現了公升序或者降序。 以此類推還可以實現按年齡排序等.

本例結果如下:

***********第一種方法***********************

eagle 10000

sam 20000

eddy 25000

juneys 30000

***********第二種方法***********************

juneys 30000

eddy 25000

sam 20000

eagle 10000

python實現mask矩陣(根據列表所給元素)

行和列的位置都在以下三個列表中的一列中,則對應位置為1,其餘位置全為0 7 56,239 327,438 454,522 556,574 586 57 85,96 112,221 238 113 220,328 437,455 521,557 573 實現def generatemaskbasedo...

Python列表物件實現原理詳解

python中的列表基於pylistobject實現,列表支援元素的插入 刪除 更新操作,因此pylistobject是乙個變長物件 列表的長度隨著元素的增加和刪除而變長和變短 同時它還是乙個可變物件 列表中的元素根據列表的操作而發生變化,記憶體大小動態的變化 pylistobject的定義 typ...

python3 selenium獲取列表某一列的值

python3 selenium獲取列表某一列的值 我們在坐自動化測試時,我們可能不想單純的想驗證乙個選項卡,我們讓指令碼隨機選擇乙個選項進行接下來的操作。例如我們想獲取列表某一列的某乙個資料 隨機的 進行操作時,我們該怎麼操作?請看下面的列表,獲取列表的所有運單號 我們可以選擇xpath通過進行定...