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

如何在Python中对JSON数组按指定键排序及按category分组

问题1:对JSON数组按内部某个键排序

在Python中,将JSON字符串解析为列表后,可使用内置的sorted()函数,通过key参数指定排序依据的键:

示例代码

假设已将JSON解析为列表data:

# 按"id"升序排序
sorted_by_id = sorted(data, key=lambda item: item["id"])

# 按"x_name"降序排序
sorted_by_name_desc = sorted(data, key=lambda item: item["x_name"], reverse=True)

# 处理键可能不存在的情况(避免KeyError)
sorted_safe = sorted(data, key=lambda item: item.get("category", ""))

key参数接受一个匿名函数,返回用于排序的字段值;reverse=True可实现降序排列。


问题2:按"category"属性分组JSON数组

Python中可以通过字典(或collections.defaultdict)高效实现分组,步骤如下:

方法1:使用collections.defaultdict(简洁写法)

from collections import defaultdict

# 假设data是解析后的JSON列表
grouped = defaultdict(list)
for item in data:
    category = item["category"]
    grouped[category].append(item)

# 转换为期望的输出格式
result = [{"category": cat, "points": items} for cat, items in grouped.items()]

方法2:使用普通字典(无需额外导入)

grouped = {}
for item in data:
    category = item["category"]
    if category not in grouped:
        grouped[category] = []
    grouped[category].append(item)

# 同样转换为目标格式
result = [{"category": cat, "points": items} for cat, items in grouped.items()]

两种方法的时间复杂度均为O(n)(n为数组长度),仅需遍历一次原数组即可完成分组,适合处理未知数量的类别和条目。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 03:32:52