对于家庭作业,我们需要创建一个函数,该函数接受两个输入(列表和字符串)并返回一个列表。我想使用列表理解来编写这个函数,但是遇到了一个烦人的问题。这是我想重写的原始函数:
index = [['keyword1', ['url1', 'url2', 'url3']], ['keyword2', ['url4', 'url5']]...]
def lookup(index, keyword):
result = []
for entry in index:
if entry[0] == keyword:
result += entry[1]
return result
这些是我使用列表理解的尝试:
def lookup(index, keyword):
return [entry[1] for entry in index if entry[0] == keyword]
def lookup(index, keyword):
return [ulist for key, ulist in index if i == keyword]
最后...
def lookup(index, keyword):
return [j for j in (entry[1] for entry in index if entry[0] == keyword)]
这里的问题是它在列表内的列表中返回所需的 url,如下所示:
[['url1', 'url2', 'url3']]
而不是所需的格式:
['url1', 'url2', 'url3']
我想做这样的事情(在 return 语句的末尾添加 [0] 以便它给我内部列表):
def lookup(index, keyword):
return [j for j in (entry[1] for entry in index if entry[0] == keyword)][0]
但这似乎不是正确的方法。我是否试图不必要地使用列表理解(我的理解是这种情况非常适合列表理解)?有什么建议么?