【问题标题】:How to handle errors in hash tables in python 3?如何在 python 3 中处理哈希表中的错误?
【发布时间】:2019-12-07 20:04:45
【问题描述】:

在哈希表中得到一个基本错误

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 for i in range(n)] 
                for j in range(2)]
    

    生成列表列表。如果你打印它,你会看到它有两个项目(两个列表),所以像 a[i] 这样 i > 1 的索引操作将不起作用。也许您想生成一个具有不同结构的列表?

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

    或者您可以更改索引逻辑,例如has[1][abs(a[i])] = 1.

    一般来说,打印变量之间的状态有助于随时了解正在发生的事情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-18
      • 2011-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-27
      • 1970-01-01
      • 2019-06-30
      相关资源
      最近更新 更多