У меня есть это назначение, где я хотел бы создать пустую строку, в которой будут храниться редкие векторные данные. Мне нужно проверить, существует ли индекс ключа в разреженном векторе (self.data). Если нет, мне нужно сохранить в пустой строке разреженный вектор и нулевые значения. Я получаю сообщение об ошибке: TypeError: str возвращено не в виде строки (тип NoneType) . Это мой код:
class SparceVector(object):
def __init__(self, n):
self.length = n
self.data = {}
def __str__(self):
outstr = None or ""
assert 0 <= key and key < self.length
try:
outstr = ((str(key), str(value)) for key,value in self.data.items())
return
except KeyError:
return 0
return "The sparce vector is {}".format(outstr)
def __len__(self):
return self.legth
def __getitem__(self, key):
assert 0 <= key and key < self.length
try:
return self.data[key]
except KeyError:
return 0
return self.data[key]
def __setitem__(self, key, value):
assert 0 <= key and key < self.length
if value != 0:
self.data[key] = value
def nonzeros(self):
return self.data
def __add__(self, other):
assert self.length == other.length
merged = SparceVector(self.length)
c = {key:value for key, value in self.data.items()}
for key, value in other.data.items():
try:
c[key] += value
except KeyError:
c[key] = value
merged.data = c
merged.nonzeros()
return merged
def __iter__(self):
return iter(self.data)
def key(self):
return self.data.key()
def items(self):
return self.data.items()
def values(self):
return self.data.values()