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

如何将嵌套列表转换为字典?以矩阵位置为键的实现问询

实现方案:将矩阵(嵌套列表)转换为以(列索引, 行索引)为键的字典

没问题,这本质就是把嵌套列表的行优先索引转换成矩阵的列-行位置标识作为字典键。下面给你两种Python实现方式,从基础到简洁都有:

方法一:嵌套循环(直观易懂)

这种方式逻辑清晰,适合刚接触Python的朋友理解,一步步遍历每一行和每个元素,手动构建字典:

def matrix_to_dict(matrix):
    result_dict = {}
    # 遍历每一行,row_idx是矩阵的行索引
    for row_idx, row in enumerate(matrix):
        # 遍历当前行的每个元素,col_idx是矩阵的列索引
        for col_idx, element in enumerate(row):
            # 把(列索引, 行索引)作为键,元素作为值存入字典
            result_dict[(col_idx, row_idx)] = element
    return result_dict

# 测试示例
test_matrix = [
    ['1', '2', '5'],
    ['3', '4'],
    ['6', '7', '8', '9']
]
print(matrix_to_dict(test_matrix))
# 输出结果:
# {(0, 0): '1', (1, 0): '2', (2, 0): '5', (0, 1): '3', (1, 1): '4', (0, 2): '6', (1, 2): '7', (2, 2): '8', (3, 2): '9'}

方法二:字典推导式(简洁高效)

如果追求代码简洁,用Python的字典推导式可以一行完成核心逻辑,执行效率和循环方式一致,但代码更紧凑:

def matrix_to_dict(matrix):
    return {(col_idx, row_idx): element 
            for row_idx, row in enumerate(matrix) 
            for col_idx, element in enumerate(row)}

# 用上面的test_matrix测试,结果完全相同

注意事项

  • 这两种方法都支持非规则矩阵(即每行元素数量不同),会自动按每行实际的元素列索引来生成键。
  • 如果你的矩阵元素是可变类型(比如列表),字典里会存储该元素的引用,这点和常规字典行为一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 06:59:50