前幾天在給個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))