You need to enable JavaScript to run this app. Python中检查字典字段是否为None的判断条件不符合预期
优惠活动
大模型
产品
解决方案
定价
更多

Python中检查字典字段是否为None的判断条件不符合预期

判断条件的核心逻辑偏差

你现在的判断写法从根上搞反了保留规则的触发逻辑,主要有两个问题:

  • 逻辑运算符搭配错误
    你的保留需求是两个条件同时满足才留:目标键的值既不是空字符串、也不是None。
    但你当前写的判断是 items['Anotherfield']!= '' or items['Anotherfield'] is None,用的是「或」逻辑——只要两个判断分支满足任意一个,就会把字典项追加到新列表里:
    • 当值为None时:None != '' 的结果是True,第一个判断分支直接命中,整项被保留,完全没被拦截
    • 当值为空字符串''时:'' != '' 是False,同时空字符串不是None,第二个判断也为False,两个分支都不触发,空字符串的项被正常排除
      这就是你遇到的“空字符串判断生效、但None拦不住”的原因:你整个判断的实际效果是「只要值不是空字符串,不管是不是None都保留」,根本没把None纳入排除范围。
  • 代码笔误
    原定义的data列表里最后一个字典多打了一个右大括号:{'Field': 'somevalue', 'Anotherfield': None}},实际运行会触发语法错误,属于书写时的手滑问题。
修正后的实现代码

把判断逻辑改成「用且连接两个正向保留条件」即可:

data = [
    {'Field': 'somevalue', 'Anotherfield': 'somevalue'},
    {'Field': 'somevalue', 'Anotherfield': ''},
    {'Field': 'somevalue', 'Anotherfield': None}
]
datanew = []

for items in data:
  # 仅当值既不是空字符串、也不是None时,才保留当前字典
  if items['Anotherfield'] != '' and items['Anotherfield'] is not None:
    datanew.append(items)

运行后得到的结果就和预期一致:datanew = [{'Field': 'somevalue', 'Anotherfield': 'somevalue'}]

补充提醒:不要图省事直接写 if items['Anotherfield'] 做过滤,这种写法会把所有Python判定为假值的类型(比如数值0、布尔值False、空列表等)也一并排除,不符合你明确提出的「仅排除空字符串和None」的规则。

内容的提问来源于stack exchange,提问作者Bilal Hakim

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.12 14:27:07