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

从API获取的大型JSON生成列表中条件筛选子列表

筛选列表中指定name的子列表解决方案

嘿,我来帮你搞定这个筛选需求!你的数据结构是顶层有80多个元素,每个里面的data字段是10个次级列表,要挑出其中name为**"My Color"**的那些对吧?

这里有两种常用的方法,你可以根据自己的习惯选择:

方法1:用purrr包(简洁高效)

purrr是tidyverse生态里专门处理列表的工具,代码可读性拉满。如果还没安装这个包,先跑安装命令:

install.packages("purrr")

然后执行筛选代码(记得把api_data替换成你实际的列表变量名):

library(purrr)

filtered_results <- api_data %>%
  # 提取每个顶层元素中的$data子列表
  map("data") %>%
  # 对每个$data列表,仅保留name等于"My Color"的子项
  map(~ keep(.x, ~ .x$name == "My Color")) %>%
  # 将嵌套列表扁平化,得到一维的结果列表
  flatten()

方法2:基础R循环(无需额外包)

如果不想安装新包,用基础R的循环也能实现相同效果:

# 初始化空列表存储筛选结果
filtered_results <- list()

# 遍历顶层的每个元素
for (top_item in api_data) {
  # 筛选当前顶层元素$data中name为"My Color"的子列表
  matching_items <- top_item$data[sapply(top_item$data, function(sub_list) sub_list$name == "My Color")]
  # 将匹配项追加到结果列表中
  filtered_results <- c(filtered_results, matching_items)
}

两种方法都能准确捞取所有符合条件的子列表,就算部分顶层元素的data里没有"My Color"的项,代码也会自动跳过,不会出现报错~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:45:30