Python检查嵌套字典所有status值是否均为1的最优方法
检查嵌套字典中所有子字典status是否全为1的最优方法
最优方法是用Python内置的all()函数搭配生成器表达式,这写法既简洁又高效,还符合Python的惯用风格。
核心代码示例
data = { '1234': {'jid':1341, 'msg':'' , 'status':0}, '5678': {'jid':1342, 'msg':'' , 'status':1}, '1112': {'jid':1343, 'msg':'' , 'status':0}, '1314': {'jid':1344, 'msg':'' , 'status':1} } # 检查所有子字典的status是否全为1 all_status_1 = all(sub_dict['status'] == 1 for sub_dict in data.values()) print(all_status_1) # 输出False,因为存在status为0的项
为什么这是最优解?
- 短路求值:
all()会在遍历过程中一旦发现某个子字典的status不等于1,就立刻停止遍历并返回False,和你手动设置标志位的效率完全一致,但代码更简洁。 - 可读性强:一行代码就清晰表达了"所有子字典的status都等于1"的逻辑,不需要额外的循环和标志变量。
- 兼容性好:适用于所有Python版本,是处理"全满足"类判断的标准写法。
额外处理:防止子字典缺失status键
如果担心部分子字典可能没有status键,可以用get()方法避免KeyError:
all_status_1 = all(sub_dict.get('status') == 1 for sub_dict in data.values())
这种情况下,缺失status的子字典会被判定为不满足条件(因为get()返回None,None不等于1)。
内容的提问来源于stack exchange,提问作者Ira
相关产品推荐
相关产品推荐

