为了完成一项作业任务,我们需要创建一个函数,该函数接受两个输入(列表和字符串),并返回一个列表。我希望使用列表推导式来编写此函数,但是一直遇到一个烦人的问题。以下是我想要重新编写的原始函数:
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']
我想只需这样做(在返回语句结尾添加 [0] 以便给出内部列表):
def lookup(index, keyword):
return [j for j in (entry[1] for entry in index if entry[0] == keyword)][0]
但这似乎不是正确的方法。我是否试图不必要地使用列表推导式(我的理解是,这种情况非常适合使用列表推导式)?有什么建议吗?