Python 字典非常非常快,使用整数元组不会成为问题。但是,您的用例似乎有时您需要进行单坐标检查,并且遍历所有字典当然很慢。
但是,您可以使用三个字典来加快数据结构的访问速度,而不是进行线性搜索:
class Grid(object):
def __init__(self):
self.data = {} # (i, j) -> data
self.cols = {} # i -> set of j
self.rows = {} # j -> set of i
def __getitem__(self, ij):
return self.data[ij]
def __setitem__(self, ij, value):
i, j = ij
self.data[ij] = value
try:
self.cols[i].add(j)
except KeyError:
self.cols[i] = set([j])
try:
self.rows[j].add(i)
except KeyError:
self.rows[j] = add([i])
def getRow(self, i):
return [(i, j, data[(i, j)])
for j in self.cols.get(i, [])]
def getCol(self, j):
return [(i, j, data[(i, j)])
for i in self.rows.get(j, [])]
请注意,还有许多其他可能的数据结构,具体取决于您要执行的操作、阅读频率、更新频率、是否按矩形查询、是否查找最近的非空单元格等等。