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

如何基于'nazwa'键对API返回的多个JSON对象进行分组?

嘿,我来给你分享几个按nazwa键分组JSON对象的实用思路,不管你用Python还是JavaScript,都能快速实现~

Python 实现方案

方法一:手动循环分组(直观易理解)

这是最基础也最灵活的方式,哪怕你对库不熟悉也能轻松搞定:

  • 先把API返回的JSON字符串转成Python的字典列表
  • 初始化一个空字典用来存分组结果
  • 遍历每个对象,用nazwa的值作为键,把同组的对象塞进对应的列表里
import json

# 模拟API返回的JSON响应
api_response = '''
[
  {"nazwa": "Kawa", "cena": 15},
  {"nazwa": "Herbata", "cena": 10},
  {"nazwa": "Kawa", "cena": 20},
  {"nazwa": "Sok", "cena": 8}
]
'''
# 转成Python列表
items = json.loads(api_response)

# 初始化分组字典
grouped_items = {}
for item in items:
    group_key = item['nazwa']
    # 如果键不存在,先创建空列表
    if group_key not in grouped_items:
        grouped_items[group_key] = []
    # 把当前对象加入对应分组
    grouped_items[group_key].append(item)

print(grouped_items)

方法二:用itertools.groupby(简洁高效)

如果你的数据可以先排序,用这个库方法会更简洁,注意必须先按nazwa排序,因为groupby只会把连续的相同键分到一组:

from itertools import groupby
import json

api_response = '''
[
  {"nazwa": "Kawa", "cena": 15},
  {"nazwa": "Herbata", "cena": 10},
  {"nazwa": "Kawa", "cena": 20},
  {"nazwa": "Sok", "cena": 8}
]
'''
items = json.loads(api_response)

# 先按nazwa字段排序
sorted_items = sorted(items, key=lambda x: x['nazwa'])
# 分组并转成字典
grouped_items = {key: list(group) for key, group in groupby(sorted_items, key=lambda x: x['nazwa'])}

print(grouped_items)
JavaScript 实现方案

JS里最常用的就是reduce方法,一行核心逻辑就能搞定分组,非常高效:

  • 从API拿到响应后转成JSON数组(比如用fetch().then(res => res.json()))
  • 用数组的reduce方法遍历,累积出分组结果
// 模拟API返回的数组
const apiData = [
  {"nazwa": "Kawa", "cena": 15},
  {"nazwa": "Herbata", "cena": 10},
  {"nazwa": "Kawa", "cena": 20},
  {"nazwa": "Sok", "cena": 8}
];

// 用reduce分组
const groupedData = apiData.reduce((acc, currentItem) => {
  const key = currentItem.nazwa;
  // 如果当前分组不存在,创建空数组
  if (!acc[key]) {
    acc[key] = [];
  }
  // 加入当前元素
  acc[key].push(currentItem);
  return acc;
}, {});

console.log(groupedData);
额外注意点
  • 如果有些JSON对象可能没有nazwa键,记得加容错处理:比如Python用item.get('nazwa', '未分组'),JS用currentItem?.nazwa || '未分组'
  • 处理超大数据集时,Python的手动循环和JS的reduce性能都不错,groupby因为要先排序,注意排序的性能开销

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:48:01