我得到一个输入N * M矩阵(元组的元组),值从1到9。
对这个结构进行散列的最佳方法是什么,所以我可以得到每8个值的位置(x,y)? (例如,8可以是5或7 ......)
答案 0 :(得分:3)
由于你想要找到5s,7s和8s的位置,将一个通过矩阵存储在dict中的所有位置可能更有效,而不是5s的一次传递,7s的一次传递等等......
loc = {}
for x in range(N):
for y in range(M):
loc.setdefault(matrix[x][y], []).append((x,y))
答案 1 :(得分:1)
“Hash”对此是错误的。您只想在2D数组中搜索特定值。也许是这样的......
height = len(data)
width = len(data[0])
eights = [(x, y) for y in range(height) for x in range(width) if data[x][y] == 8]
答案 2 :(得分:0)
[(x,y) for x in range(N) for y in range(M) if matrix[x][y] == 8]