python - 查找模式时出现无法散列的类型错误

标签 python list python-3.x numpy scipy

我正在尝试编写一个 Python 函数 one_mode(l),它接受一个非空列表 l 并返回一对及其模式和频率模式。 (如果有多种模式,可以返回任意一种。)

到目前为止我已经...

from scipy import stats
def one_mode(l):
    return stats.mode(l)

适用于以下测试:

one_mode([5, 6, 7, 5]) == (5,2)

但不是为了测试:

one_mode([5, 6, 7, 5, 6]) in {(5, 2), (6, 2)}

在这种情况下它给了我

unhashable type: 'numpy.ndarray'

使用我当前的代码有什么办法解决这个问题吗?

最佳答案

如果您将 stats.mode 的结果强制为一个元组,您的查找将起作用:

代码:

from scipy import stats
def one_mode(l):
    mode = stats.mode(l)

    # return first mode results as tuple
    return mode[0][0], mode[1][0]

测试代码:

assert one_mode([5, 6, 7, 5]) == (5, 2)
assert one_mode([5, 6, 7, 5, 6]) in {(5, 2), (6, 2)}

关于python - 查找模式时出现无法散列的类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42547073/

相关文章:

python - 使用字典将单词数组拆分为字符

python - 从类变量元素构造实例变量 pyparsing 匹配器

list - 找到所有可能的对

python - 嵌套/转义 f 字符串 "="(等号)表达式

python - 即使存在 301 状态,如何获取响应文本?

python - 将嵌套 JSON 转换为 CSV

python - 如何在每次循环调用时更新 Python 函数参数?

python - 在 python 中,如果两个列表都包含公共(public)元素,则从两个元组列表中选取元组

java - 如何使用选定的对象维护 Wicket 中的第二个项目列表 'ListMultipleChoice'

python - 评估多项式系数