如何获取字典中某个键的最大值?

How to get the maximum value of a key in dict?

我想获取 URL 最高分辨率的视频。

如果我有下面的字典,是否最容易得到最大尺寸的视频的URL?

最好是按partition拆分size,将number格式化成int类型,然后取值吗?

videos = {
        'size_476_306': 'https://www.....',
        'size_560_360': 'https://www.....',
        'size_644_414': 'https://www.....',
        'size_720_480': 'https://www.....',
}

已解决

我无法理解 lambda,所以我用不同的方式实现了它。

for size, v_url in videos.items():

    max_size_info = size.split('_')
    split_size = int(max_size_info[1])
    size_array.append(split_size)
    video_array.append(v_url)

max_size = size_array.index(max(size_array))
if str(size_array[max_size]) in v_url:
    print(size,v_url)

Is it best to split the size by partition, format the number into an int type, and then get the value?

是的,我就是这样做的:

>>> max(videos.items(), key=lambda i: int.__mul__(*map(int, i[0].split("_")[1:])))
('size_720_480', 'https://www.....')

这里有一个带有命名函数的稍微详细的版本:

>>> def get_resolution(key: str) -> int:
...     """
...     Gets the resolution (as pixel area) from 'size_width_height'.
...     e.g. get_resolution("size_720_480") -> 345600
...     """
...     _, width, height = key.split("_")
...     return int(width) * int(height)
...
>>> max(videos, key=get_resolution)
'size_720_480'

给定最大键的表达式,我们可以很容易地得到对应的值:

>>> videos[max(videos, key=get_resolution)]
'https://www.....'

或者我们可以通过取 items() 的最大值来获取键值对,这里使用更简单的 lambda,它只是将 key, value 转换为 get_resolution(key)

>>> max(videos.items(), key=lambda i: get_resolution(i[0]))
('size_720_480', 'https://www.....')