如何基于内层字典的值使用filter()过滤Python嵌套字典
解决方案
你可以结合filter()和字典的items()方法完成过滤,具体实现如下:
dictionary = { 'val1': {"path1": "local"}, 'val2': {"path2": "remote"}, 'val3': {"path3": "remote"}, 'val4': {"test4": "remote"}, } # 核心过滤逻辑 filtered_dictionary = dict(filter( lambda item: 'remote' in item[1].values(), dictionary.items() ))
代码说明
- 首先通过
dictionary.items()获取外层字典所有的(外层键, 内层字典)键值对,作为filter()的输入可迭代对象 - lambda匿名函数作为过滤规则:检查当前项的内层字典所有取值中是否包含
remote,满足条件的项会被保留 - 最后用
dict()将filter()返回的迭代器转换为新字典,就得到你需要的过滤结果
如果你的场景中内层字典固定仅包含1个键值对,可以将判断逻辑替换为next(iter(item[1].values())) == 'remote',不需要遍历所有值,运行效率更高。
内容的提问来源于stack exchange,提问作者Maciek Kucharski
相关产品推荐
相关产品推荐

