我想獲取具有最大解析度的視頻的 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)
uj5u.com熱心網友回復:
最好是按磁區分割大小,把數字格式化成int型別,然后取值嗎?
是的,我就是這樣做的:
>>> 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.....')
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/465151.html
上一篇:洗掉嵌套字典的鍵值對
