在这个__getitem__方法中,我如何添加一个部分,以便如果字典没有为该索引指定任何值,它返回 0?



我需要创建一个__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)

最新更新