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

如何筛选列表中value字段非None的字典元素并返回结果列表?

筛选列表中value不为None的元素

原始列表

[{"value": 19, "datetime": "2021-01-01T00:30:00Z"},
 {"value": None, "datetime": "2021-01-01T00:40:00Z"},
 {"value": None, "datetime": "2021-01-01T00:50:00Z"},
 {"value": None, "datetime": "2021-01-01T00:55:00Z"}]

需求

筛选出其中value字段不为None的元素,组成新列表返回,期望输出:

[{"value": 19, "datetime": "2021-01-01T00:30:00Z"}]

你尝试的代码

def do_something():
  for li in my_list:
    if li['value']:
        print(li)

问题分析与正确实现

你的代码存在两个问题:

  1. 判断条件if li['value']会过滤所有布尔值为False的value(比如0、空字符串等),但我们只需要排除None;
  2. 函数仅打印符合条件的元素,没有将它们收集成新列表返回。

方式一:循环构建新列表

def filter_non_none_values(my_list):
    filtered = []
    for item in my_list:
        # 明确判断value不是None
        if item['value'] is not None:
            filtered.append(item)
    return filtered

# 调用示例
my_list = [{"value": 19, "datetime": "2021-01-01T00:30:00Z"},
           {"value": None, "datetime": "2021-01-01T00:40:00Z"},
           {"value": None, "datetime": "2021-01-01T00:50:00Z"},
           {"value": None, "datetime": "2021-01-01T00:55:00Z"}]

result = filter_non_none_values(my_list)
print(result)

方式二:列表推导式(更简洁)

Python的列表推导式可以一行完成筛选,代码更简洁高效:

my_list = [{"value": 19, "datetime": "2021-01-01T00:30:00Z"},
           {"value": None, "datetime": "2021-01-01T00:40:00Z"},
           {"value": None, "datetime": "2021-01-01T00:50:00Z"},
           {"value": None, "datetime": "2021-01-01T00:55:00Z"}]

filtered_list = [item for item in my_list if item['value'] is not None]
print(filtered_list)

两种方式运行后都会得到你期望的输出结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 23:57:20