请求协助实现matrixToDict函数:将非空矩阵转换为以列索引为键的列表字典
解决矩阵转列索引字典的问题
没问题,我来帮你搞定这个matrixToDict函数的实现!根据你的需求,我们需要把非空矩阵转换成以列索引为键、对应列元素列表为值的字典,哪怕某些列只在部分行里存在。
实现思路
核心思路很清晰:
- 先确定矩阵中最长的行长度,这样就能知道需要处理到哪一列索引;
- 遍历每一个列索引,收集所有行中该列存在的元素(跳过那些长度不足的行,避免索引越界);
- 将列索引和对应的元素列表存入字典即可。
完整代码实现
def matrixToDict(mat): # 获取矩阵中最长行的长度,确定需要处理的列索引范围 max_col_count = max(len(row) for row in mat) result_dict = {} for col_idx in range(max_col_count): # 收集当前列的所有有效元素 result_dict[col_idx] = [ row[col_idx] for row in mat if col_idx < len(row) ] return result_dict
测试你的示例
把你给出的测试矩阵代入函数,就能得到完全符合预期的结果:
test_matrix = [[1,2,3],[4,5,6],[7,8,9,10]] print(matrixToDict(test_matrix)) # 输出结果:{0: [1, 4, 7], 1: [2, 5, 8], 2: [3, 6, 9], 3: [10]}
代码细节说明
max_col_count:通过遍历所有行的长度找到最大值,确保我们不会遗漏任何存在的列索引(比如示例中第三行有4个元素,所以列索引要覆盖到3);- 列表推导式里的判断条件
col_idx < len(row):既避免了索引越界错误,又能精准收集到每一列的有效元素; - 这个实现还能兼容更复杂的场景,比如矩阵里有不同长度的行,甚至包含空行(题目说明矩阵非空,空行也能正常处理)。
内容的提问来源于stack exchange,提问作者Ilay
相关产品推荐
相关产品推荐

