Django фильтрует определенные атрибуты из ответа API

Я работаю с TMDB API и хочу получить конкретное видео из словаря видео, которое является главным трейлером фильма.

movie_video_request = requests.get("https://api.themoviedb.org/3/movie/" + str(movie_id) + "/videos?api_key=" + TMDB_API_KEY)
movie_video_results = movie_video_request.json()
movie_videos = movie_video_results['results']
newDict = dict()
for key,value in movie_videos.items():
    if key == 'name' and value == 'Official Trailer':
       newDict[key] = value

return render(request, 'Movie Details.html', {'newDict ':newDict })

Мой ответ API

"results": [
             {
                "iso_639_1": "en",
                "iso_3166_1": "US",
                "name": "Walking Corpses Clip",
                "key": "GGe_h2MWMrs",
                "site": "YouTube",
                "size": 1080,
                "type": "Clip",
                "official": true,
                "published_at": "2022-01-29T17:00:39.000Z",
                "id": "61f77629bb105700a0b16a3f"
            },
            {
                "iso_639_1": "en",
                "iso_3166_1": "US",
                "name": "Official Trailer",
                "key": "JfVOs4VSpmA",
                "site": "YouTube",
                "size": 1080,
                "type": "Trailer",
                "official": true,
                "published_at": "2021-11-17T01:30:05.000Z",
                "id": "61945b8a4da3d4002992d5a6"
            },
            {
                "iso_639_1": "en",
                "iso_3166_1": "US",
                "name": "The New Spider-Man Title is…",
                "key": "iqyPvdsOWKk",
                "site": "YouTube",
                "size": 1080,
                "type": "Teaser",
                "official": true,
                "published_at": "2021-02-24T17:44:20.000Z",
                "id": "60378fdcd132d60040a45d96"
            }
    ]

Я хочу, чтобы мой результат был таким, как в официальном трейлере

{key": "JfVOs4VSpmA"}

чтобы я мог поместить его в тег <a href>

<a href="https://www.youtube.com/watch?v={{ newDict.value }}">
  <p> Watch Trailer </p>
</a>

Я получаю ошибку

Exception Value: 'list' object has no attribute 'items'

Если вы присмотритесь, то увидите, что movie_videos - это список. Если вы хотите выполнить итерацию по нему, просто отбросьте .items().

В дальнейшем нужно немного изменить цикл, потому что мы проходим через список словарей, а не через словарь словарей.

Это может выглядеть примерно так:

newDict = dict()

for movie in movie_videos:
    if movie['name'] == 'Official Trailer':
       newDict['key'] = movie['key']

movie_videos - это список dicts, а не dict.

for result in movie_videos:
    if result['name'] == 'Official Trailer':
        newDict['key'] = result['key']
Вернуться на верх