2016-05-08 4 views
-2

私が作成しようとしているコードは、ユーザーが検索語を入力して一致する検索語を出力するプログラムです。コンテキストはリスト内のリストです。サブリストは文章と著者です。リスト内のアイテムを検索するには?

myList = [["Hello my name is Liam", "John Doe"], ["Hello my name is Jeff", "Jane Doe"]] 

search = input("search: ") 
for i in myList: 
    for j in i: 
     if search in j.lower(): 
      print('"{}"'.format(i[0])) 
      print("--{}".format(i[1])) 

検索はうまく動作しますが、検索を実行すると、作成者ではなく、文章内で一致するもののみが検索されます。だから私が"John"を検索した場合、何も出てこないでしょう。なぜなら、著者インデックスは文インデックスではないからです。

私は

for j in i[0]: 

を使用してみました。しかし、それは動作しませんでした。

+0

「John」も一致しています。あなたが達成しようとしていることは私には不明です... – heemayl

答えて

2

代わりのすべてのサブリストをループするだけのインデックス0にリストをチェックしてください。

search = input("search: ") 
for i in myList: 
    if search in i[0].lower(): 
     print('"{}"'.format(i[0])) 
     print("--{}".format(i[1])) 
1

はそれを試してみてください! enumerate()は、ほとんどのリスト/配列の状況で不思議に作用します。

myList = [["Hello my name is Liam", "John Doe"], ["Hello my name is Jeff", "Jane Doe"]]  
search = input("search: ") 
for i in myList: 
    for index, j in enumerate(i): 
     if index > 0: 
      continue 
     if search.lower() in j.lower(): 
      print('"{}"'.format(i[0])) 
      print("--{}".format(i[1])) 

大文字小文字を区別しないように、検索文字列を小文字にすることを忘れないでください。この状況では、内部配列のタプレットを考慮してください。私が使用するほとんどの言語では使用できない+使用できない理由を見つけることはほとんどありませんが、あなたが提示した構造が必要な場合はそれに合っています。

関連する問題