operator的itemgetter和attrgetter


前幾天在給個list做排序的時候,隱隱約約想起來有個語法糖可以替代lambda函數,用來獲取list中dict的key,作為排序的key。

 

這個語法糖平時用得少,怎么都想不起來。今天查看python標准庫operator時,終於把這兩個方法找到了,做個筆記。

 

因為就是一個語法糖,太簡單了,沒必要做太多解釋說明,直接貼代碼吧。

 

from operator import itemgetter, attrgetter

__author__ = 'blackmatrix'


get_name = lambda user: user['name']

get_address = lambda user: getattr(user, 'address')


class User:

    def __init__(self, name, address):
        self.name = name
        self.address = address


laowang = {'name': '老王', 'address': '隔壁'}
laoli = User('老李', '樓下')


if __name__ == '__main__':
    # itemgetter('name') 和 get_name 作用是相同的
    # 都是接受一個對象,獲取對象key為name的值
    # 主要用來替代只是為了獲取value的lambda函數
    print(itemgetter('name')(laowang))
    print(get_name(laowang))

    # 同樣的,attrgetter('address')也是等同於get_address
    # 用來替代只為了獲取attr的lambda函數
    print(attrgetter('address')(laoli))
    print(get_address(laoli))

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM