Ta có một danh sách tuple. Ta cần tìm tuple có giá trị lớn nhất trong nó. Nhưng nếu nhiều tuple có cùng giá trị lớn nhất, ta cần tuple đầu tiên có giá trị lớn nhất đó.
Với itemgetter và max
Với itemgetter(1) ta lấy tất cả giá trị từ vị trí index 1 rồi áp dụng hàm max để lấy item có giá trị max. Nhưng nếu nhiều kết quả trả về, ta áp dụng index 0 để lấy tuple đầu tiên có phần tử lớn nhất.
Ví dụ
from operator import itemgetter # khởi tạo list listA = [('Mon', 3), ('Tue', 20), ('Wed', 9)] # Danh sách cho trước print("Given list : \n" ,listA) # sử dụng max() và itemgetter() res = max(listA, key=itemgetter(1))[0] # in kết quả print("Day with maximum score is : \n",res)Đầu ra
Chạy mã trên cho kết quả sau:
Given list : [('Mon', 3), ('Tue', 20), ('Wed', 9)] Day with maximum score is : TueVới max và lambda
Ta dùng hàm lambda để lấy phần tử tại vị trí index 1 rồi áp dụng max. Sau đó áp dụng index 0 để lấy phần tử đầu tiên trong các kết quả trùng khớp.
Ví dụ
# khởi tạo list listA = [('Mon', 3), ('Tue', 20), ('Wed', 9)] # Danh sách cho trước print("Given list : \n" ,listA) # sử dụng max() và lambda res = max(listA, key=lambda i: i[1])[0] # in kết quả print("Day with maximum score is : \n",res)Đầu ra
Chạy mã trên cho kết quả sau:
Given list : [('Mon', 3), ('Tue', 20), ('Wed', 9)] Day with maximum score is : TueVới sorted
Trong cách này ta dùng hàm sorted với reverse=True khi áp dụng lambda.
Ví dụ
# khởi tạo list listA = [('Mon', 3), ('Tue', 20), ('Wed', 9)] # Danh sách cho trước print("Given list : \n" ,listA) # sử dụng sorted() và lambda res = sorted(listA, key=lambda i: i[1], reverse=True)[0][0] # in kết quả print("Day with maximum score is : \n",res)Đầu ra
Chạy mã trên cho kết quả sau:
Given list : [('Mon', 3), ('Tue', 20), ('Wed', 9)] Day with maximum score is : Tue