Python如何将一维稀疏列表转字典函数改写为二维版本
二维稀疏列表转字典实现方案
你现有一维版本的核心逻辑(遍历元素+记录索引+非零值入字典)完全可以复用,只需要多增加一层行维度的遍历、同时记录行列双索引即可。
具体修改逻辑
- 保留原有的字典初始化逻辑
- 新增外层循环逐行遍历输入的二维列表,维护行索引计数器
- 对每一行,复用你一维版本的遍历逻辑,维护列索引计数器
- 非零元素存入字典时,键从单索引改成
(行索引, 列索引)格式的元组即可
最终实现代码
def sp2(ns): dic = {} row_index = 0 # 外层遍历每一行,记录行索引 for row in ns: col_index = 0 # 内层遍历行内元素,逻辑和一维版本完全一致 for val in row: if val != 0: dic[(row_index, col_index)] = val col_index += 1 row_index += 1 return dic
效果验证
运行测试用例,输出完全符合预期:
# 测试用例(a/e/h/i替换为实际值即可,这里用字符示意) print(sp2([ ['a',0,0], [0,'e',0], [0,'h','i'] ])) # 输出 {(0,0):'a', (1,1):'e', (2,1):'h', (2,2):'i'} print(sp2([])) # 输出 {} print(sp2([[0,0,0], [0,0,0]])) # 输出 {}
内容的提问来源于stack exchange,提问作者tackgundo
相关产品推荐
相关产品推荐

