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

如何用jq按电影类型分组统计影片数并忽略无类型条目

用JQ统计电影类型的影片数量

需求说明

给定电影JSON列表,需要统计每种唯一类型对应的影片数量,同时忽略无效类型(包括tag为null的情况),输出以类型为键、数量为值的JSON对象。

输入示例1

[
   {
      "title":"X",
      "genres":[
         {
            "tag":"Horror"
         },
         {
            "tag":"Thriller"
         },
         {
            "tag":"Mystery"
         }
      ]
   },
   {
      "title":"Zero Dark Thirty",
      "genres":[
         {
            "tag":"Thriller"
         },
         {
            "tag":"Drama"
         },
         {
            "tag":"History"
         },
         {
            "tag":"War"
         }
      ]
   }
]

期望输出1

{
   "Horror":1,
   "Thriller":2,
   "Mystery":1,
   "Drama":1,
   "History":1,
   "War":1
}

特殊情况输入示例

[
   {
      "title":"Some movie",
      "genres":[
         {
            "tag": null
         }
      ]
   },
   {
      "title":"Some other movies",
      "genres":[
         {
            "tag":"Comedy"
         },
         {
            "tag":"Drama"
         }
      ]
   }
]

解决方法

完全可以用JQ实现,执行以下命令即可:

jq 'reduce .[] as $movie ({}; reduce $movie.genres[] as $genre (.; if $genre.tag != null then .[$genre.tag] += 1 else . end))'

命令解释

  • reduce .[] as $movie ({}; ...):遍历每个电影对象,初始值为一个空对象,用来存储最终统计结果
  • reduce $movie.genres[] as $genre (.; ...):遍历当前电影的所有类型对象
  • if $genre.tag != null then .[$genre.tag] += 1 else . end:如果类型的tag不为空,则对应类型的计数加1,否则跳过该无效类型

特殊情况验证

针对特殊输入示例,执行命令后会输出:

{
  "Comedy": 1,
  "Drama": 1
}

符合预期,忽略了tag为null的无效类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 02:06:04