You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将数组十字相邻元素按索引存入字典?

解决方案

给定数组:

arr =[[0, 2, 3],
      [2, 0, 4],
      [3, 4, 0]]

要完成字典的填充,只需在遍历每个索引时,检查当前位置的上下左右四个方向是否在数组的有效范围内,把合法位置的元素收集起来即可。修改后的代码如下:

from collections import defaultdict

arr =[[0, 2, 3],
      [2, 0, 4],
      [3, 4, 0]]

d = defaultdict(list)
rows = len(arr)
cols = len(arr[0]) if rows > 0 else 0

for i in range(rows):
    for j in range(cols):
        # 检查上方元素(i-1行,j列)
        if i - 1 >= 0:
            d[f"{i}{j}"].append(arr[i-1][j])
        # 检查下方元素(i+1行,j列)
        if i + 1 < rows:
            d[f"{i}{j}"].append(arr[i+1][j])
        # 检查左侧元素(i行,j-1列)
        if j - 1 >= 0:
            d[f"{i}{j}"].append(arr[i][j-1])
        # 检查右侧元素(i行,j+1列)
        if j + 1 < cols:
            d[f"{i}{j}"].append(arr[i][j+1])

print(d)

代码说明

  • 先定义数组的总行数rows和总列数cols,避免重复计算索引边界
  • 对每个位置(i,j),依次判断四个方向的索引是否合法:
    • 上方:行索引i-1不能小于0
    • 下方:行索引i+1不能大于等于总行数
    • 左侧:列索引j-1不能小于0
    • 右侧:列索引j+1不能大于等于总列数
  • 合法方向对应的元素直接追加到字典对应键的列表中

运行结果

defaultdict(<class 'list'>, {'00': [2, 2], '01': [0, 0, 3], '02': [0, 4], '10': [0, 3, 0], '11': [2, 4, 2, 4], '12': [3, 0, 0], '20': [2, 4], '21': [2, 0, 3], '22': [4, 4]})

内容的提问来源于stack exchange,提问作者moth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 21:06:23