Phân biệt attrgetter và itemgetter

Chào mọi người.
Mình có google cách phân biệt attrgetter và itemgetter mà không hiểu được. Mong mọi người có thể chỉ giúp là 2 cái khác nhau như thế nào không? vì mình xem ví dụ thì thấy giống nhau (đều có thể dùng lamba thay thế như nhau).
Cảm ơn.

attrgetter = get 1 attribute của 1 object nào đó
itemgetter = get value của 1 object nào đó thông qua hàm __getitem__

ngắn gọn thì attrgetter thường chỉ xài cho 1 class, vì class thì mới có attribute, còn itemgetter xài được cho mọi class có implement của hàm __getitem__

tại sao dùng 2 cái này, thì chủ yếu nó là pythonic mà thôi :kissing: chứ bạn xài lambda cũng có sao đâu. mình có đọc thấy vài chỗ bảo xài 2 hàm này nó nhanh hơn x2 lần nhưng ko thấy benchmark nên cũng bán nghi lắm OcO


ố search phát ra có ng benchmark nè

https://stackoverflow.com/questions/17243620/operator-itemgetter-or-lambda

3 Likes

itemgetter còn có thể nhận nhiều tham số ứng với chỉ số cần truy cập.

4 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?