【发布时间】:2021-07-26 03:47:12
【问题描述】:
我正在尝试计算频率表的平均值。
现在直到打印出平均值,一切正常,但之后我不断收到 TypeError: unhashable type: 'list'
直到这里程序正常:
import threading
import statistics
from statistics import mode
import numpy as np
print("Instructions:Enter a number than press ENTER until when fully completed")
ScoresNumber=[]
n = int(input("Entering amount of scores you want : "))
for i in range(0, n):
ele = int(input())
ScoresNumber.append(ele)
print("These are the scores for the Frequency table",ScoresNumber)
print("\n")
print("Now enter Frequency")
FrequencyNumber=[]
a = int(input("Entering amount of frequencies you want : "))
for i in range(0, a):
ele = int(input())
FrequencyNumber.append(ele)
print("These are the frequencies for the Frequency table",FrequencyNumber)
SumFrequencyNumber=sum(FrequencyNumber)
print("Sum of elements in frequency is :",SumFrequencyNumber)
print("\n")
print ("Now calculating FX wait....")
FX=[a * b for a, b in zip(FrequencyNumber,ScoresNumber)]
print("Calculated,This is the FX:",FX)
print("\n")
SumFX=sum(FX)
print("Sum of elements in FX is :",SumFX)
print("\n")
print("Final Output")
Mean=SumFX/SumFrequencyNumber
print("Mean is:",Mean)
问题发生的重点:
def most_common(b):
return(mode(b))
ModeList=[[item for item, count in zip(ScoresNumber,FrequencyNumber) for i in range(count)]]
b=(ModeList)
print(most_common(b))
ScoresNumber.sort()
b=(ScoresNumber[-1])
c=(ScoresNumber[0])
Range=b-c
print("Range is:",Range)
整个程序:
import threading
import statistics
from statistics import mode
import numpy as np
print("Instructions:Enter a number than press ENTER until when fully completed")
ScoresNumber=[]
n = int(input("Entering amount of scores you want : "))
for i in range(0, n):
ele = int(input())
ScoresNumber.append(ele)
print("These are the scores for the Frequency table",ScoresNumber)
print("\n")
print("Now enter Frequency")
FrequencyNumber=[]
a = int(input("Entering amount of frequencies you want : "))
for i in range(0, a):
ele = int(input())
FrequencyNumber.append(ele)
print("These are the frequencies for the Frequency table",FrequencyNumber)
SumFrequencyNumber=sum(FrequencyNumber)
print("Sum of elements in frequency is :",SumFrequencyNumber)
print("\n")
print ("Now calculating FX wait....")
FX=[a * b for a, b in zip(FrequencyNumber,ScoresNumber)]
print("Calculated,This is the FX:",FX)
print("\n")
SumFX=sum(FX)
print("Sum of elements in FX is :",SumFX)
print("\n")
print("Final Output")
Mean=SumFX/SumFrequencyNumber
print("Mean is:",Mean)
def most_common(b):
return(mode(b))
ModeList=[[item for item, count in zip(ScoresNumber,FrequencyNumber) for i in range(count)]]
b=(ModeList)
print(most_common(b))
ScoresNumber.sort()
b=(ScoresNumber[-1])
c=(ScoresNumber[0])
Range=b-c
print("Range is:",Range)
我不断收到错误TypeError: unhashable type: 'list' 我知道我无法将两个列表压缩在一起并比较每个元素,但我正在尝试解决问题。我想知道我是否在某个地方犯了错误。
【问题讨论】:
-
你能粘贴整个回溯吗?
-
为什么
ModeList是一个列表而不是一个列表? -
请提供预期的minimal, reproducible example (MRE)。我们应该能够复制和粘贴您的代码的连续块,执行该文件,并重现您的问题以及跟踪问题点的输出。这让我们可以根据您的测试数据和所需的输出来测试我们的建议。这段代码不是最小的。此外,它挂起等待输入——不要指望我们输入测试数据或构建测试文件。相反,只需硬编码导致问题的测试用例。