Hello I've been doing some HashSet Questions for the past week or so. The last Question asks me to create iter method for my HashSet. Here is my code:
class HashSet:
def __init__(self, capacity=10):
self.table = [None] * capacity
def add(self, item):
h = hash(item)
index = h % len(self.table)
if self.table[index] == None:
self.table[index] = LinkedList()
if item not in self.table[index]:
self.table[index].add(item)
def __iter__(self):
table = []
ptr = None
for i in range(0, len(self.table)):
if self.table[i]:
ptr = self.table[i].head
while ptr != None:
table.append(ptr.item)
ptr = ptr.next
return sorted(table)
It doesn't seem to work and it gives me an error: TypeError: iter() returned non-iterator of type 'list'. What am I supposed to return??
Input: 7 20 30 40 50 60 70 80 90
Desired Output: [20, 30, 40, 50, 60, 70, 80, 90]
Values inside table var are correct I tested that with print() statement. How do I fix it ?