如何获取字典中某个键的最大值?
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.....')
我想获取 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.....')