如何处理python 3哈希表中的错误?

问题描述 投票:0回答:1

在哈希表中获取基本错误

n = int(input("Enter the length of the array "))

a = [0 for i in range(n)]


for i in range(0,n):
    a[i] = int(input("Enter elements of array: "))

# maxi = max(a)
# print(maxi)

has = [[0 for i in range(n)] 
            for j in range(2)]

for i in range(0,n):
    if(a[i]>=0):
        has[a[i]][0] = 1
    else:
        has[abs(a[i])][1] = 1

search = int(input("Enter the element to be searched: "))

# if(search>0):


def search1(search):
    if(search>0):
        if(a[search][0] == 1):
            print("Present")
        else:
            print("Absent")

    else:
        search = abs(search)
        if(a[search][1] == 1):
            print("Present")
        else:
            print("absent")

如果发生这种情况,谁能帮我吗?错误:列表索引超出范围

此代码首先从用户那里获取输入数组,然后根据正数或负数将数字存储在哈希表中。然后基于索引本身制定搜索算法,以给出O(1)的时间复杂度。但是在这两者之间,我得到列表索引超出范围错误。请帮助解决以下错误。

arrays python-3.x search hashtable indexoutofrangeexception
1个回答
0
投票

所以,您正在使用列表来模拟哈希,对吗?这是问题所在:表达式

[[0 for i in range(n)] 
            for j in range(2)]

生成列表列表。如果您进行打印,您会看到它有两个项目(两个列表),因此i [1]之类的a[i]这样的索引操作将不起作用。也许您想生成具有不同结构的列表?

[[0 for i in range(2)] 
            for j in range(n)]

它有助于打印变量之间的状态以通知正在发生的事情。

© www.soinside.com 2019 - 2024. All rights reserved.