从列表中的dict获取正确的数据

时间:2016-07-30 07:58:50

标签: python data-structures data-dictionary

我试图从推文中获取视频网址,A是从tweety获取的。因为twitter并不能说出哪一个是最高质量的视频,所以我认为我必须比较最高的比特率'并存储' 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']存储到变量中?

1 个答案:

答案 0 :(得分:2)

如果您想获得具有最高比特率的字典(或网址):

这会使用bitrate键比较字典列表中的项目,并返回具有最高bitrate的字典。

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

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

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

EDIT1:根据您下面的评论 - 您认为没错,您必须从列表中排除这些词典。

这不包括没有比特率的字典。键:

[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'])