从列表中的字典中获取正确的数据
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'])
我正在尝试从推文中获取视频 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'])