如何修改Python代码从嵌套字典提取指定Read键的值并返回有序列表
get_left_overlaps函数修改方案
原代码问题梳理
- 未定义入参,无法接收嵌套字典overlaps和指定键名两个输入
- 错误使用列表索引/切片语法访问字典,字典不支持
[0]、[1:]这类操作 - 用全局set存储结果会自动去重,不符合需求,且缺少排序逻辑
- 遍历逻辑完全偏离需求,没有正确取其他Read子字典中对应指定键的数值
修改后实现代码
def get_left_overlaps(overlaps, target_read): res = [] # 遍历所有外层的Read键 for read_name, sub_dict in overlaps.items(): # 跳过和目标键名相同的项 if read_name == target_read: continue # 取当前Read子字典中对应目标键的数值,加入结果列表 res.append(sub_dict[target_read]) # 对结果升序排序后返回 res.sort() return res
测试验证
用你提供的overlaps字典测试调用:
overlaps = {'Read1': {'Read3': 0, 'Read2': 1, 'Read5': 1, 'Read4': 0, 'Read6': 29}, 'Read3': {'Read1': 0, 'Read2': 0, 'Read5': 0, 'Read4': 1, 'Read6': 1}, 'Read2': {'Read1': 13, 'Read3': 1, 'Read5': 21, 'Read4': 0, 'Read6': 0}, 'Read5': {'Read1': 39, 'Read3': 0, 'Read2': 1, 'Read4': 0, 'Read6': 14}, 'Read4': {'Read1': 1, 'Read3': 1, 'Read2': 17, 'Read5': 2,'Read6': 0}, 'Read6': {'Read1': 0, 'Read3': 43, 'Read2': 0, 'Read5': 0, 'Read4': 1}} print(get_left_overlaps(overlaps, 'Read1'))
输出结果和预期一致:[0, 0, 1, 13, 39]
内容的提问来源于stack exchange,提问作者Lilly001
相关产品推荐
相关产品推荐

