![](/img/trans.png)
[英]How to get the maximum value from a dict and determine the key where the maximum is from?
[英]How to get the maximum value of a key in dict?
我想獲得最高分辨率視頻的 URL。
如果我有以下字典,是否最容易獲得最大尺寸的視頻的 URL?
是不是最好按分區拆分大小,把數字格式化成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)
是不是最好按分區拆分大小,把數字格式化成int類型,然后取值?
是的,我就是這樣做的:
>>> max(videos.items(), key=lambda i: int.__mul__(*map(int, i[0].split("_")[1:])))
('size_720_480', 'https://www.....')
這是一個更詳細的版本,名為 function:
>>> 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.....')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.