我需要创建一个__getitem__
方法来返回指定索引的值。 我将如何添加一个部分,以便如果字典没有为该索引指定任何值,它将返回 0?
下面是一个示例字典:
{(0,0): 1, (1,1): 5, (1,2): 3, (2,2): 1} # called self.matrix in the function
这是我到目前为止所拥有的:
def __getitem__(self,index):
if type(index) is not tuple and len(index) != 2 and type(index[0]) != int and type(index[1]) != int and index[0] > self.rows and index[1] > self.cols and index[0] < 0:
return self.matrix[index]
else:
raise TypeError
如果未指定键的值,我似乎无法弄清楚如何返回 0。顺便说一句,在示例字典(self.matrix(中,如果没有为矩阵的其余部分给出该值,则值为0。
3x3:[1 0 0
0 5 3
0 0 1] #this is what I mean
不需要将代码放入__getitem__
方法中。您可以使用__missing__
方法:
>>> class MyDict(dict):
def __missing__(self, index):
return 0
>>> md = MyDict({(0,0): 1, (1,1): 5, (1,2): 3, (2,2): 1})
>>> md[0,0]
1
>>> md[1,2]
3
>>> md[2, 1]
0
>>>
您可以将__getitem__
中的return
语句更改为以下语句:
return self.matrix.get(index, default=0)