不可哈希类型:检查密钥是否存在时出错'dict'



我想检查 json 响应中是否存在键,但当前收到标题中显示的错误;

这是我的代码;

for i in range(len(MoviesLoadedData)):
     URL_1080p = ""
     if MoviesLoadedData[i]['torrents']['en']['1080p'] in MoviesLoadedData[i]['torrents']['en']:
        URL_1080p = MoviesLoadedData[i]['torrents']['en']['1080p']['url']
     else:
         pass

这是 json 响应;

{
    "_id": "tt1408101",
    "imdb_id": "tt1408101",
    "title": "Star Trek Into Darkness",
    "torrents": {
        "en": {
            "1080p": {
                "url": "magnet:?xt=urn:btih:BF5529C12559DB47FEA3E57BC7ECE827D188589B&tr=udp://glotorrents.pw:6969/announce&tr=udp://tracker.opentrackr.org:1337/announce&tr=udp://torrent.gresille.org:80/announce&tr=udp://tracker.openbittorrent.com:80&tr=udp://tracker.coppersurfer.tk:6969&tr=udp://tracker.leechers-paradise.org:6969&tr=udp://p4p.arenabg.ch:1337&tr=udp://tracker.internetwarriors.net:1337",
                "seed": 803,
                "peer": 169,
                "size": 2093796557,
                "filesize": "1.95 GB",
                "provider": "YTS"
            },
            "720p": {
                "url": "magnet:?xt=urn:btih:A73CEF306766938EA033DD373FD30337696A8E39&tr=udp://glotorrents.pw:6969/announce&tr=udp://tracker.opentrackr.org:1337/announce&tr=udp://torrent.gresille.org:80/announce&tr=udp://tracker.openbittorrent.com:80&tr=udp://tracker.coppersurfer.tk:6969&tr=udp://tracker.leechers-paradise.org:6969&tr=udp://p4p.arenabg.ch:1337&tr=udp://tracker.internetwarriors.net:1337",
                "seed": 428,
                "peer": 90,
                "size": 967615447,
                "filesize": "922.79 MB",
                "provider": "YTS"
            }
        }
    }
}

任何帮助/建议将不胜感激。

如果你想检查'1080p'是否是字典
中的键 MoviesLoadedData[i]['torrents']['en'] ,然后,您需要:

if '1080p' in MoviesLoadedData[i]['torrents']['en']:

您正在检查的是字典是否 MoviesLoadedData[i]['torrents']['en']['1080p']是一个键,这是不可能的,因为字典不能是哈希键。

这应该使它:

if MoviesLoadedData[i]['torrents']['en']['1080p']:
    url_1080p = MoviesLoadedData[i]['torrents']['en']['1080p']['url']
    print(url_1080p)

相关内容

最新更新