首页 > 解决方案 > Python - 获取其中一项的最高值的字典(json列表)的索引?

问题描述

我使用 TMDB api [tmdbsimple https://pypi.org/project/tmdbsimple/] 它为我提供了一个 json,我想在其中提取 'dict posters' 项目的 'file_path' 数量最多'vote_count',我该怎么做?

import tmdbsimple as tmdb
myKey = '****' #api key https://developers.themoviedb.org/3/getting-started/introduction
tmdb.API_KEY = myKey

tvg_tmdbid = '67158'
lst_posters_mylang = tmdb.TV(tvg_tmdbid).images(language='pt')['posters']
if lst_posters_mylang != []:
    item = ???
    posterpath = lst_posters_mylang[item]['file_path']

注意:修复了变量“lst_posters_mylang”的打印

print(lst_posters_mylang) 返回这个 json:

[
    {'aspect_ratio': 0.6666666666666666, 'file_path': '/3o7f2Xjwl5hcoiioR9eGdD9ezHt.jpg', 'height': 2160, 'iso_639_1': 'pt', 'vote_average': 5.312, 'vote_count': 1, 'width': 1440
    },
    {'aspect_ratio': 0.6666666666666666, 'file_path': '/cZy35eGPBcXOagv3ujmfGVm4U1C.jpg', 'height': 2160, 'iso_639_1': 'pt', 'vote_average': 0.0, 'vote_count': 0, 'width': 1440
    },
    {'aspect_ratio': 0.6666666666666666, 'file_path': '/46CmxozfvZSpeg4cEZ86Sm6QOXT.jpg', 'height': 1500, 'iso_639_1': 'pt', 'vote_average': 0.0, 'vote_count': 0, 'width': 1000
    },
    {'aspect_ratio': 0.6666666666666666, 'file_path': '/oWr83fLF26UUn6tPKNMk2U7fqLr.jpg', 'height': 750, 'iso_639_1': 'pt', 'vote_average': 0.0, 'vote_count': 0, 'width': 500
    },
    {'aspect_ratio': 0.66625, 'file_path': '/22YerMIPRTPe4jG1A2a9jgpBWxo.jpg', 'height': 800, 'iso_639_1': 'pt', 'vote_average': 0.0, 'vote_count': 0, 'width': 533
    }
]

在这种情况下,“海报”的项目 0 具有最高的“投票计数”= 1,我如何通过 python 获得这个“海报”项目的价值?只有这样我才能得到'file_path'值:

项目 = 0

海报路径 = lstposters_mylang[项目]['file_path']

海报路径----'/3o7f2Xjwl5hcoiioR9eGdD9ezHt.jpg'

标签: pythonjsonlistdictionarymax

解决方案


使用 python 内置的sorted,您可以通过参数定义自己的排序标准key

默认情况下它将按升序排序,因此您需要设置reverse=True.

然后您可以从列表中获取第一项以获得最大值。

best_poster = sorted(lst_posters_mylang['posters'], key=lambda bd:bd["vote_count"], reverse=True)[0]

旁注:空数组是错误的,所以你可以这样做if lst_posters_mylang:


推荐阅读