从列表中的字典中获取正确的数据

Get right data from dict inside list

我正在尝试从推文中获取视频 URL,A 来自 tweepy。因为 Twitter 没有告诉我哪个是最高质量的视频,所以我假设我必须比较最高的 'bitrate' 并存储与之对应的 'url'。这就是我所拥有的。

请耐心等待,我是新手。

A = [{'content_type': 'application/x-mpegURL', 'url': 'https://video.twimg.com/ext_tw_video/758995712280412672/pu/pl/X_6gAm0z8TBBbEAR.m3u8'},
    {'bitrate': 832000, 'content_type': 'video/mp4', 'url': 'https://video.twimg.com/ext_tw_video/758995754280412672/pu/vid/360x640/6nxKFKpdku-qAl__.mp4'},
    {'content_type': 'application/dash+xml', 'url': 'https://video.twimg.com/ext_tw_video/758995715280412672/pu/pl/X_6gAm0z8TBBbEAR.mpd'},
    {'bitrate': 320000, 'content_type': 'video/mp4', 'url': 'https://video.twimg.com/ext_tw_video/758995715280412672/pu/vid/180x320/VqRF6IcnmsLxZIil.mp4'}]


for i, val in enumerate(A):
    if 'bitrate' in A[i]:
        print(A[i]['bitrate'], A[i]['url'])

此代码生成

832000 https://video.twimg.com/ext_tw_video/758996713280412672/pu/vid/360x640/6nxKFKpdku-qAl__.mp4
320000 https://video.twimg.com/ext_tw_video/758997716280412672/pu/vid/180x320/VqRF6IcnmsLxZIil.mp4

如何将最高 ['bitrate'] 对应的 ['url'] 存储到变量中?

如果你想获得比特率最高的字典(或url):

这将使用 bitrate 键和 returns 字典的字典列表的项目与最高的 bitrate 进行比较。

max(A, key=lambda x:x['bitrate'])['url']

编辑: 根据您上面的评论,您当然可以将 url 分配给变量。

variable = max(A, key=lambda x:x['bitrate'])['url']

EDIT1: 根据您在下方的评论 - 您相信是对的,您必须从列表中排除此类词典。

这排除了没有 'bitrate' 键的字典:

[d for d in A if d.has_key('bitrate')]

因此您必须将 A 切换到上面的行,结果将是:

variable = max([d for d in A if d.has_key('bitrate')],key=lambda x:x['bitrate'])