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

将字典值传入SciPy单因素ANOVA时出现长度错误

问题

尝试将字典的值传入SciPy的f_oneway函数时,收到错误提示“input is too short (must be greater than 1)”,但字典值的长度为3,理论上符合要求。已知可以通过键逐个传入值(用逗号分隔),但希望代码能适配未知键数量/字典长度的场景,请问是否有特定处理方式,或是实现思路完全错误?

代码及运行结果

x = {'a' : [1,2,3], 'b' : [4,5,6], 'c' : [7,8,9]}
for a in x.values():
    print(a)
len(x.values())

运行输出:

[1, 2, 3]
[4, 5, 6]
[7, 8, 9]
3

执行stats.f_oneway(x.values())时触发错误:

TypeError: at least two inputs are required; got 1.

解决方案

问题核心是x.values()返回的是一个字典视图对象,而stats.f_oneway需要接收多个独立的数组参数,而非单个包含多数组的可迭代对象。

要适配任意数量的字典值,只需使用Python的解包运算符*,将字典值的可迭代对象拆分为独立参数传入函数:

from scipy import stats

x = {'a' : [1,2,3], 'b' : [4,5,6], 'c' : [7,8,9]}
# 用*解包字典值为独立参数
result = stats.f_oneway(*x.values())
print(result)

执行后会得到正确的方差分析结果:

F_onewayResult(statistic=150.0, pvalue=2.467332583299388e-06)

这种写法无需关心字典的键数量,会自动将每个值作为单独参数传递给f_oneway,完美适配未知长度的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 11:31:01