Skip to main content
 首页 » 编程设计

python之根据值创建具有数组索引的数组

2025年05月04日20kevingrace

我有一个像这样的二维数组:

map = [[0, 1, 1], [0, 2, 1], [0, 2, 2]] 

我想获取基于值的索引数组。对于 example map[0][0] == 0 所以我希望 (0, 0) 对位于结果数组中的索引 0 上。结果数组应如下所示:

result[0] = [(0, 0), (1, 0), (2, 0)] 
result[1] = [(0, 1), (0, 2), (1, 2)] 
result[2] = [(1, 1), (2, 1), (2, 2)] 

我一直努力在不编写非常糟糕的代码的情况下获得这样的结果:

    val0 = [] 
    val1 = [] 
    val2 = [] 
    for i in range(3): 
        for j in range(3): 
            if(map[i][j] == 0) : val0.append((i, j)) 
            if(map[i][j] == 1) : val1.append((i, j)) 
            if(map[i][j] == 2) : val2.append((i, j)) 
 
    data = [] 
    data.append(val0) 
    data.append(val1) 
    data.append(val2) 

请您参考如下方法:

遍历矩阵并保存您在字典中看到每个值的位置。那是你的结果。

retval = defaultdict(list) 
for i in range(len(map)): 
   for j in range(len(map[i])): 
      val = map[i][j] 
      retval[val].append((i,j)) 
print retval