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

如何优雅地将字典列表按分组转换为NumPy数组?

字典列表按键分组转换为NumPy数组集合

下面提供几种优雅的实现思路:

方法一:用collections.defaultdict高效分组

借助defaultdict自动初始化列表容器,遍历过程中完成分组,最后批量转换为NumPy数组:

import numpy as np
from collections import defaultdict

data = [{'Cool': 128}, {'Cool': 51}, {'Hot': 75}, {'Hot': 62}, {'Archive': 144}, {'Archive': 12}]

grouped = defaultdict(list)
for d in data:
    # 提取单个字典的唯一键值对
    key, val = next(iter(d.items()))
    grouped[key].append(val)

# 转换为NumPy数组集合
result = {k: np.array(v) for k, v in grouped.items()}

这个方法时间复杂度为O(n),处理大规模数据时效率较高。

方法二:纯Python字典实现(无额外依赖)

如果不想导入collections模块,可手动判断键的存在性完成分组:

import numpy as np

data = [{'Cool': 128}, {'Cool': 51}, {'Hot': 75}, {'Hot': 62}, {'Archive': 144}, {'Archive': 12}]

grouped = {}
for d in data:
    key, val = next(iter(d.items()))
    if key not in grouped:
        grouped[key] = []
    grouped[key].append(val)

result = {k: np.array(v) for k, v in grouped.items()}

逻辑清晰,无需额外依赖,适合轻量场景。

方法三:用pandas快速处理(适合复杂扩展)

如果后续有数据清洗、统计分析需求,用pandas的分组能力会更便捷:

import numpy as np
import pandas as pd

data = [{'Cool': 128}, {'Cool': 51}, {'Hot': 75}, {'Hot': 62}, {'Archive': 144}, {'Archive': 12}]

# 转换为DataFrame自动对齐相同键
df = pd.DataFrame(data)
# 提取每列非空值并转为NumPy数组
result = {col: df[col].dropna().to_numpy() for col in df.columns}

该方法适合处理包含多维度、需要后续分析的数据集。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 08:35:08