【问题标题】:Filter a dictionary with matrix row and columns过滤具有矩阵行和列的字典
【发布时间】:2021-04-13 17:19:32
【问题描述】:

我有一个字典{(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)]},键是与矩阵相关的坐标或(行,列)元组,值是该节点附近的邻居或相邻的(行,列)对,例如如果 (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]] 和整个字典以此类推

【问题讨论】:

    标签: python dictionary matrix filter grid


    【解决方案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]}
    

    【讨论】:

      猜你喜欢
      • 2013-07-25
      • 2017-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      相关资源
      最近更新 更多