宿題では、2 つの入力 (リストと文字列) を受け取り、リストを返す関数を作成する必要がありました。リスト内包表記を使用してこの関数を書きたいのですが、厄介な問題が発生しています。これが私が書き直したい彼の元の関数です:
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]
しかし、それは正しい方法ではないようです。不必要にリスト内包表記を使用しようとしていますか (私の理解では、この状況はリスト内包表記に適しているということでした)。助言がありますか?