入力 N*M 行列 (タプルのタプル) として、1 から 9 までの値を取得します。
この構造をハッシュして、8 つの値ごとに (x,y) の場所を取得する最良の方法は何ですか? (たとえば、8 は 5 または 7 になる可能性があります...)
5 と 7 と 8 の位置を見つけたいので、5 に 1 パス、7 に 1 パスなどではなく、マトリックスを 1 パスで dict にすべての位置を格納する方が効率的です。 ..
loc = {}
for x in range(N):
for y in range(M):
loc.setdefault(matrix[x][y], []).append((x,y))
「ハッシュ」はこれに対する間違った言葉です。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]
[(x,y) for x in range(N) for y in range(M) if matrix[x][y] == 8]