一千萬個為什麽

搜索

在Python中對對象進行排序

我想通過其中一個屬性對對象進行排序。截至目前,我正在以下列方式進行

USpeople.sort(key=lambda person: person.utility[chosenCar],reverse=True)

這工作正常,但我已經讀過使用operator.attrgetter()可能是實現此類排序的更快方法。首先,這是正確的嗎?假設它是正確的,我如何使用operator.attrgetter()來實現這種排序?

我試過了,

 keyFunc=operator.attrgetter('utility[chosenCar]')
 USpeople.sort(key=keyFunc,reverse=True)

但是,我得到一個錯誤,說沒有屬性'utility [chosenCar]'。

問題是我想要排序的屬性是在字典中。例如,實用程序屬性采用以下形式:

utility={chosenCar:25000,anotherCar:24000,yetAnotherCar:24500}

我想使用operator.attrgetter()通過selectedCar的實用程序進行排序。我怎麽能這樣做?

提前致謝。

最佳答案

不, attrgetter 不會比lambda更快 - 它實際上只是做同樣事情的另一種方式。

您可能會對使用 key 而不是 cmp 的建議感到困惑,這確實要快得多,但您已經這樣做了。

轉載註明原文: 在Python中對對象進行排序