我有一个以矩阵样式存储列表列表的类,它可以像 [x,y] 一样被索引。
现在我有这些设置:
test_dict = {1:"cow",2:"horse"}
randommap = mapArray(None, (20,20))
随机地图只是充满了 1 的列表。所以任何索引都会返回 1。但这是我迷路的地方,可能是因为对字典的工作方式有误解:
test_dict[1]
这显然会回馈“牛”和
randommap[1,1] #or any two x,y values up to 20 for that matter
给我一个值1。
但这怎么给我一个关键错误:
test_dict[randommap[1,1]]
孤立地,索引 randommap 给了我一个值 1,所以不应该将 1 作为 test_dict 的索引提供,从而返回我“牛”吗?
更新:这是我认为导致问题的两种方法。看起来他们返回的是字符串而不是整数,但我不知道我是否完全理解两者之间的区别。
def __str__(self):
return str(self.mapdata)
def __repr__(self):
return str(self.mapdata)
这是重载的__getitem__
方法:
def __getitem__(self, (x,y)):
#Just reverses it so it works intuitively and the array is
# indexed simply like map[x,y] instead of map[y][x]
return mapArray(self.mapdata[y][x])
抱歉,格式似乎有点混乱。