You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python嵌套字典:筛选子字典字段符合条件的顶层键

Python嵌套字典筛选时返回符合条件的顶层键

问题场景

给定如下嵌套字典结构:

nested = {
    "Moli": {
        "Buy": 75,
        "Sell": 53,
        "Quantity": 300,
        "TF": True},
    "Anna": {
        "Buy": 55,
        "Sell": 83,
        "Quantity": 154,
        "TF": False},
    "Bob": {
        "Buy": 25,
        "Sell": 33,
        "Quantity": 100,
        "TF": False},
    "Annie": {
        "Buy": 74,
        "Sell": 83,
        "Quantity": 96,
        "TF": True}
}

现有筛选代码如下:

subset = [d for d in nested.values() if d['TF'] == False]

这段代码运行后返回的是2个符合条件的子字典组成的列表,不符合需求。预期要得到TF字段为False对应的顶层键名称列表,即输出["Anna" , "Bob"],需要实现筛选时直接获取字典键而非对应值。

解决方法

问题出在遍历逻辑上:nested.values()只会迭代字典所有顶层键对应的值,自然拿不到顶层键名。
要同时拿到键和对应的值做条件判断,直接迭代字典的items()方法即可——该方法每次迭代返回(顶层键, 对应值)的元组,判断逻辑不变,满足条件时返回键名就可以得到目标结果:

subset = [name for name, detail in nested.items() if detail['TF'] == False]

运行上述代码,subset的结果就是预期的["Anna", "Bob"]。

小提示:因为TF字段本身是布尔类型,判断时可以省略== False的写法,直接用if not detail['TF'],写法更简洁,运行效果完全一致。


内容的提问来源于stack exchange,提问作者Alex Kfoury

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 04:30:54