搜索列表清单

时间:2017-05-02 15:26:35

标签: python list

我有一个列表列表:

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

我正在使用二进制搜索来搜索列表列表并根据用户输入返回输出。

基本上,用户需要键入单个列表中第二个元素所代表的名称,并返回第一个元素。

userinput = Dwayne

output = 2

这是我的代码:

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)

我得到0作为输出,这不是我想要的所以我需要一些二进制搜索的技巧。通常,二进制搜索带有整数的列表是正常的,但我不确定字符串。

1 个答案:

答案 0 :(得分:0)

在此if声明中:

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

return [mid][0]更改为return l[mid][0],因为您希望返回列表l[mid]中元素l中的第一个条目。