如何按嵌套值过滤Python字典并返回完整条目?
解决方案:筛选嵌套字典中Hardware为'C'的条目
直接用字典推导式就能高效解决这个问题,这是最符合Python风格的写法,一行代码就能完成筛选,同时保留原外层键:
SomeDict = { 'al': {'Hardware': 'K', 'speed': '100'}, 'ar2': {'Hardware': 'C', 'speed': ''}, 'ar3': {'Hardware': 'C', 'speed': ''} } # 核心筛选逻辑 FilterMagic_Desired_Result = {key: sub_dict for key, sub_dict in SomeDict.items() if sub_dict.get('Hardware') == 'C'} print(FilterMagic_Desired_Result) # 输出:{'ar2': {'Hardware': 'C', 'speed': ''}, 'ar3': {'Hardware': 'C', 'speed': ''}}
代码说明:
SomeDict.items()直接遍历原字典的所有外层键和对应的子字典,无需嵌套循环;sub_dict.get('Hardware')安全获取子字典中的Hardware值(如果子字典没有这个键,会返回None,不会触发KeyError);- 只有当Hardware值等于'C'时,才将当前的外层键和子字典保留到新字典中。
对比冗余写法
你提到的双重循环属于冗余写法,比如这种:
FilterMagic_Desired_Result = {} for key in SomeDict: sub_dict = SomeDict[key] for inner_key in sub_dict: if inner_key == 'Hardware' and sub_dict[inner_key] == 'C': FilterMagic_Desired_Result[key] = sub_dict
这种写法没必要遍历子字典的所有键,直接判断目标键的值即可,字典推导式不仅更简洁,可读性也更强。
内容的提问来源于stack exchange,提问作者Vincent Gallo
相关产品推荐
相关产品推荐

