所以我目前有一个定义游戏地图的对象的二维列表,其中每个对象代表该地图上的一个图块。当我将代码重新用于其他用途时,我想知道使用字典来存储地图数据或继续使用列表是否更有意义。对于列表,索引表示映射的 x 和 y,而在字典中,(x,y)元组将是字典的键。
我问的原因是因为地图更改是一个罕见的事件,所以数据是相当静态的,据我所知,相当恒定的查找在字典中会更快。它还应该简化循环遍历地图以绘制它。大多数情况下,我认为使用字典将简化对数据的访问,尽管我不确定在所有情况下都会如此。
这些好处值得我假设字典占用的额外内存吗?或者我什至对好处是好处是正确的?
编辑 我知道当前的方法有效,更重要的是为了获得更清晰的代码并发现任何潜在的缺点而进行切换是否有意义。像遍历数组这样的东西会来自类似的东西
for i in range(size[0]):
for e in range(size[1]):
thing.blit(....using i and e)
至
for i, e in dict.items():
i.blit(....using i and e)
或查找 dict 项目将是
def get(x, y):
if (x in range(size[0])) and (y in range(size[1])):
return self.map[x][y].tile
至
def get(item):
return self.dict.get(item)
它不多,但它有点清洁,如果它没有更慢并且没有其他缺点,我认为没有理由不这样做。