簡體   English   中英

如何獲取字典中某個鍵的最大值?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM