【发布时间】:2013-01-24 20:40:14
【问题描述】:
所以我目前有一个定义游戏地图的对象的 2d 列表,其中每个对象代表该地图上的一个图块。当我将代码重新用于其他用途时,我想知道使用字典来存储地图数据或继续使用列表是否更有意义。对于列表,索引表示映射的 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)
它不多,但它有点清洁,如果它不慢,也没有其他缺点,我认为没有理由不这样做。
【问题讨论】:
-
我还会考虑使用具有节点的图形,这些节点的属性包括 am x/y(或类似)坐标、该图块的对象以及表示可以移出/移出的图块的边。可能还要考虑带有权重的边缘,这样从草原穿过沼泽/河流等......比移动到另一个草原更难......
标签: python list dictionary