如何将嵌套列表转换为字典?以矩阵位置为键的实现问询
实现方案:将矩阵(嵌套列表)转换为以(列索引, 行索引)为键的字典
没问题,这本质就是把嵌套列表的行优先索引转换成矩阵的列-行位置标识作为字典键。下面给你两种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
相关产品推荐
相关产品推荐

