我有一个字典列表,我从每个字典中提取了两个值,并相互除以创建一个新项目。我想找到这些新项目的众数和中位数。其中有很多,所以我不想输入每个新项目来形成列表。from statistics import medianfrom statistics import meanfor stats in body_stats: size = [stats['weight']/stats['height']]median_size = median(size) mode_size = mode(size)print(mode_size, median_size)此代码似乎打印了上次进行的计算,而不是计算出众数/中位数。我假设这个结果是由于新的计算不是整个列表的一部分。它们被打印为每个值的一系列列表。我如何让他们形成一个列表而不单独输入每个计算?还有另一种方法可以从我创建的计算中找出统计计算吗?感谢您的帮助!
2 回答

守着星空守着你
TA贡献1799条经验 获得超8个赞
问题是您在每次迭代中都保存了一个项目的列表。相反,您可以使用生成器并将其提供给像这样的中值和模式。
median_size = median(stats['weight']/stats['height'] for stats in body_stats)
mode_size = mode(stats['weight']/stats['height'] for stats in body_stats)

梵蒂冈之花
TA贡献1900条经验 获得超5个赞
您需要将每个项目附加到列表中。您目前正在使用这条线做什么:
size = [stats['weight']/stats['height']]
每次都创建一个包含单个元素的新列表。每次循环运行时,它都会用单元素列表覆盖大小变量
你需要做的是
from statistics import median
from statistics import mean
size = [] # create a "size" variable that is the list type
for stats in body_stats:
size.append(stats['weight']/stats['height']) # append the calculation
median_size = median(size)
mode_size = mode(size)
print(mode_size, median_size)
添加回答
举报
0/150
提交
取消