2017-05-02 12 views
1

の一覧を検索します。は、私はリストのリストを持っているリスト

基本的に、ユーザーは個々のリストの2番目の要素で表される名前をキー入力し、最初の要素を返す必要があります。私は望んでいた私は、バイナリ検索にいくつかのヒントを必要とするものではありません出力として0を取得

lst = [['1','Alex'],['2','Dwayne'],['3','George'],['4','Jake']] 

name = input("Enter name:") 

def binarySearch(l,t): 
    low = 0 
    high = len(l)-1 
    while low<= high: 
     mid = (low+high)//2 
     if l[mid][1] == t: 
      return [mid][0] 
     elif l[mid][1]>t: 
      high = mid-1 
     else: 
      low = mid+1 
    return -1 

result = binarySearch(lst,name) 
print(result) 

イム:

userinput = Dwayne 

output = 2 

は、ここに私のコードです。通常、整数のリストのバイナリ検索は問題ありませんが、文字列についてはわかりません。このif文の中

+1

ここでは0と1のインデックスが入れ替わっているような印象です。あなたは名前を比較してインデックスを返しています。加えて、タイプミス[return] [mid] [0] 'が' mid'を返すだけです。 –

答えて

0

if l[mid][1] == t: 
      return [mid][0] 

変更return [mid][0]return l[mid][0]に、あなたがリストlの要素l[mid]で最初のエントリを返すようにしたいと。

関連する問題