2016-07-30 7 views
0

Я пытаюсь получить URL-адрес видео от твита, A был взят из tweepy. Поскольку твиттер не сообщает, какой из них является видео высокого качества, я предполагаю, что мне нужно сравнить самый высокий биттрейт и сохранить «url», который соответствует ему. Это то, что у меня есть.Получить правильные данные из внутреннего списка dict

Пожалуйста, несите меня, я новичок в этом.

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 

Как сохранить [ 'URL'], который соответствует самым высоким [ 'битрейта'] в переменную?

+2

Так что ваш вопрос здесь? –

+0

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

+0

@ IronFist Извините, я должен прояснить, как я могу сохранить ['url'], который соответствует наивысшему ['bitrate'] в переменной? –

ответ

2

Если вы хотите получить словарь (или URL) с высоким битрейтом:

Это сравнивает элементы списка словарей, использующих bitrate ключ и возвращает словарь с самой высокой bitrate.

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

EDIT: Согласно вашему комментарию выше, вы можете присвоить URL для переменных конечно.

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

EDIT1: По вашей Coment ниже - Вы уверены, что правильно, вы должны исключить такие словари из списка.

Это исключает словари без «битрейт» ключ:

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

Таким образом, вы должны перейти от А до линии выше, так что результат будет:

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

Это дает мне ошибку 'KeyError: 'bitrate'', я верю, потому что не у всех словарей есть« биттрейт »? Нужно ли вообще сравнивать словари с битрейтом? –

+0

@YogaYudistira Я обновил свой ответ. Пожалуйста, проверьте его, и если вы удовлетворены, отметьте его. –

 Смежные вопросы

  • Нет связанных вопросов^_^