如何修改Python代码从嵌套字典中查找值小于2的目标Read键
问题排查
原代码存在两个核心问题:
- 仅遍历了最外层字典,得到的
v是嵌套的内层字典,无法直接和数值2做大小比较,运行会直接抛出类型错误 - 没有统计每个Read键的符合条件次数,返回值为列表,和要求返回单个字符串
'Read4'的预期不符
修正后代码
some_dict = {'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}} def find_first_read(some_dict): # 初始化计数器,统计每个Read键对应值小于2的次数 count = {} min_threshold = 2 # 双层遍历嵌套字典 for inner_dict in some_dict.values(): for k, v in inner_dict.items(): if v < min_threshold: count[k] = count.get(k, 0) + 1 # 返回命中次数最多的键 return max(count, key=count.get) # 测试调用 print(find_first_read(some_dict)) # 输出 Read4
逻辑说明
- 先通过双层循环遍历所有内层的键值对,筛选出值小于2的条目,统计每个Read键的命中次数
- 从统计结果中取出命中次数最高的键,最终返回结果为
'Read4',符合预期
内容的提问来源于stack exchange,提问作者Lilly001
相关产品推荐
相关产品推荐

