用矩阵行和列过滤字典
Filter a dictionary with matrix row and columns
我有一个字典 {(0, 0): [(1, 0), (0, 1)], (0, 1): [(1, 1), (0, 0), (0, 2)], (0, 2): [(1, 2), (0, 1), (0, 3)], (0, 3): [(1, 3), (0, 2), (0, 4)], (0, 4): [(1, 4), (0, 3), (0, 5)], (0, 5): [(1, 5), (0, 4), (0, 6)]}
,键是坐标或与矩阵相关的 (row, col) 元组,值是相邻的或靠近该矩阵的相邻 (row, col) 对例如,如果 (0, 0) 是网格中最左上角的元素,则靠近它的节点是 (0, 1) 和 (1, 0),因为它们是相邻的。我的问题是如何过滤掉这本字典,以便我将拥有与网格上该位置对应的元素而不是 (row, col) 元组,所以可以说 (0, 0):[(1, 0), (0, 1)]
将等于 my_matrix[0][0]:[my_matrix[1][0], my_matrix[0][1]]
等等整个字典
使用带有嵌套列表理解的字典理解来遍历邻居:
matrix = [[i+j for i in range(10)] for j in range(10)]
d = {(0, 0): [(1, 0), (0, 1)], (0, 1): [(1, 1), (0, 0), (0, 2)], (0, 2): [(1, 2), (0, 1), (0, 3)], (0, 3): [(1, 3), (0, 2), (0, 4)], (0, 4): [(1, 4), (0, 3), (0, 5)], (0, 5): [(1, 5), (0, 4), (0, 6)]}
print({
matrix[key[0]][key[1]]:
[matrix[coord[0]][coord[1]] for coord in coords]
for key, coords in d.items()
})
输出:
{0: [1, 1], 1: [2, 0, 2], 2: [3, 1, 3], 3: [4, 2, 4], 4: [5, 3, 5], 5: [6, 4, 6]}
我有一个字典 {(0, 0): [(1, 0), (0, 1)], (0, 1): [(1, 1), (0, 0), (0, 2)], (0, 2): [(1, 2), (0, 1), (0, 3)], (0, 3): [(1, 3), (0, 2), (0, 4)], (0, 4): [(1, 4), (0, 3), (0, 5)], (0, 5): [(1, 5), (0, 4), (0, 6)]}
,键是坐标或与矩阵相关的 (row, col) 元组,值是相邻的或靠近该矩阵的相邻 (row, col) 对例如,如果 (0, 0) 是网格中最左上角的元素,则靠近它的节点是 (0, 1) 和 (1, 0),因为它们是相邻的。我的问题是如何过滤掉这本字典,以便我将拥有与网格上该位置对应的元素而不是 (row, col) 元组,所以可以说 (0, 0):[(1, 0), (0, 1)]
将等于 my_matrix[0][0]:[my_matrix[1][0], my_matrix[0][1]]
等等整个字典
使用带有嵌套列表理解的字典理解来遍历邻居:
matrix = [[i+j for i in range(10)] for j in range(10)]
d = {(0, 0): [(1, 0), (0, 1)], (0, 1): [(1, 1), (0, 0), (0, 2)], (0, 2): [(1, 2), (0, 1), (0, 3)], (0, 3): [(1, 3), (0, 2), (0, 4)], (0, 4): [(1, 4), (0, 3), (0, 5)], (0, 5): [(1, 5), (0, 4), (0, 6)]}
print({
matrix[key[0]][key[1]]:
[matrix[coord[0]][coord[1]] for coord in coords]
for key, coords in d.items()
})
输出:
{0: [1, 1], 1: [2, 0, 2], 2: [3, 1, 3], 3: [4, 2, 4], 4: [5, 3, 5], 5: [6, 4, 6]}