01/10/2018, 11:56

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 !

Henry viết 14:07 ngày 01/10/2018

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
giang viết 14:03 ngày 01/10/2018

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

Henry viết 14:04 ngày 01/10/2018

Â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.

Bài liên quan
0