我有一个列表列表:
[['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作为输出,这不是我想要的所以我需要一些二进制搜索的技巧。通常,二进制搜索带有整数的列表是正常的,但我不确定字符串。
答案 0 :(得分:0)
在此if
声明中:
if l[mid][1] == t:
return [mid][0]
将return [mid][0]
更改为return l[mid][0]
,因为您希望返回列表l[mid]
中元素l
中的第一个条目。