使用IDs Python迭代列表以创建新列表

2024-05-20 17:10:10 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,我尝试使用IMDBpy模块将程序列表连接到它们各自的类型。首先,我试图获得他们的IMDB ID的一个新列表,从那里获得他们相应的类型。 不幸的是,我无法遍历我的程序列表并生成相应ID的新列表。不知怎的,我的函数在第一次迭代时就卡住了。我在定义中遗漏了什么

from imdb import IMDB
ia = IMDb()
programs = ['midsomer murders', 'wheeler dealers: dream car', 'solo: a star wars story (2018)']
def ids_list(x):
    ids = []
    for item in list(x):
        movie = ia.search_movie(item)[0].getID()
        for movie in movies:
            ids.append(movie)
        return ids
    
ids_list(programs)

输出:

['0118401']

正如您所看到的,只有第一项通过,而我的代码建议它应该在通过ia.search_movie(item)[0].getID()运行后追加列表中的每一项。提前谢谢


Tags: in程序idids类型列表forsearch
2条回答

我的意思是将for-loop代码更改为:

for item in list(x):
    if len(ia.search_movie(item)):
        movies = ia.search_movie(item)[0].getID()
        [ids.append(movie) for movie in movies]
return ids

您的报税表缩进不正确。它在for循环的第一次迭代后返回:

from imdb import IMDb
ia = IMDb()
programs = ['midsomer murders', 'wheeler dealers: dream car', 'solo: a star wars story (2018)']
def ids_list(x):
    ids = []
    for item in list(x):
        movie = ia.search_movie(item)
        if movie:
          ids.append(movie[0].getID())
        else:
          ids.append(None)
    return ids
    
print(ids_list(programs))

使用列表理解和赋值运算符(Python 3.8+)的简化版本:

from imdb import IMDb
ia = IMDb()
programs = ['midsomer murders', 'wheeler dealers: dream car', 'solo: a star wars story (2018)']
def ids_list(x):
    return [m[0].getID() if (m:=ia.search_movie(i)) else None for i in x]
    
print(ids_list(programs))

相关问题 更多 >