Nhờ anh/chị giúp e đoạn code tìm Value max trong 1 dictionary

Em có đoạn Code tìm Value Max trong 1 dic thế này ạ:

my_dict = {'x':500, 'y':5874, 'z': 560}
key_max = max(my_dict.keys(), key=(lambda k: my_dict[k]))
print('Maximum Value: ',my_dict[key_max])

Kết quả là value max = 5874 tương ứng với key là y
Ở đây hình như cách giải là người ta tìm ra y trước rồi từ y mới suy ra giá trị 5874.
Nhưng mà e không hiểu ý nghĩa của dòng lệnh để tìm ra y:
key_max = max(my_dict.keys(), key=(lambda k: my_dict[k]))

em không hiểu nó hoạt động thế nào mà lại trả về được giá trị y ạ.Nhờ anh chị giải thích giùm em.
Cám ơn anh chị nhiều !

hàm max nó có dạng vậy này

def max(iterable):
    it = iter(iterable)
    max_value = next(it)
    for value in it:
        if value > max_value:
            max_value = value
    return max_value

Ở đoạn my_dict.keys() nó sẽ trả về cho bạn một dict_keys

dict_keys(['x', 'y', 'z'])

Tiếp đến, cái lambda thì nó sẽ như thế này

def lambda(key):
    return my_dict[key]
lambda('x') # -> 500
lambda('y') # -> 5874

Chốt lại vấn đề, hàm max sẽ như sau

def max(iterable):
    it = iter(iterable)
    max_key = next(it)
    max_value = lambda(max_key)
    for key in it:
        value = lambda(key)
        if value > max_value:
            max_value = value
            max_key = key
    return max_key
3 Likes

Cám ơn anh đã giải thích rất chi tiết. Cám ơn a nhiều ạ

Ây, nhầm rồi đấy. Cho đính chính lại chút.
Cái hàm max nó dùng value so sánh nhưng vẫn trả về là key nhé.
Sorry about that.

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