Python 使用多屬性來進行排序

2022-10-03 18:45:10 字數 809 閱讀 3189

python 中list.sort()是列表中非常常用的排序函式, key 引數可以對單個屬性進行排序。

但是想要實現類似 sql 中order by id, age 一樣,對多個字段進行排序就不支援了。

py2 中 sort() 函式還有個 cmp 引數可以傳入乙個方法,可以自定義對多個屬性進行排序,py3 中移除了這個字段。

py3 想要實現這個功能,需要使用 functools 模組中的方法,例項如下

#!/usr/bin/env python

# -*- coding:utf-8 -*-

# author: wxnacy([email protected])

from functools import cmp_to_key

def cmp_func(a, b):

if a['id'] < b['id']:

程式設計客棧 程式設計客棧return -1

elif a['id'] > b['id']:

return 1

if a['name'] < b['程式設計客棧name']:

return -1

elif a['name'] > b['name']:

return 1

return 0

arr.sort(key=cmp_to_key(cmp_func))

上面的例子我們實現了 id 正序排序,如果 id 相同,則按照 age 正序排序

為了方便可以封裝成乙個方法,以供列表呼叫,封裝的方法 demo 可以參見位址

總結本文標題: python 使用多屬性來進行排序

本文位址:

Python實現按物件多屬性排序

多屬性排序 把需要排序的屬性拿出來作為乙個 tuple,主要的放前面,次要的放後面。假如某物件有n個屬性,那麼先按某規則對屬性a進行排序,在屬性a相等的情況下再按某規則對屬性b進行排序,以此類推。終端列印結果如下 按照屬性name進行排序 按照ascii進行排序,本案例中,按照小寫字母的順序進行排序...

Python對多屬性的重複資料去重

python中的pandas模組中對重複資料去重步驟 1 利用dataframe中的duplicated方法返回乙個布林型的series,顯示各行是否有重複行,沒有重複行顯示為false,有重複行顯示為true 2 再利用dataframe中的drop duplicates方法用於返回乙個移除了重複...

python 高階教程 使用物件屬性進行排序

0.摘要 python中的類通常不支援比較操作,但是我們可以依據類的屬性值進行排序。本文主要介紹使用operator.attrgetter 方法獲取類的屬性值,從而完成排序。1.operator.attrgetter 方法 from operator import attrgetter class ...