如何根据列表中字典中的值进行的新计算创建统计计算,python 3

我有一个字典列表,我从每个字典中提取了两个值,并相互除以创建一个新项目。我想找到这些新项目的众数和中位数。其中有很多,所以我不想输入每个新项目来形成列表。


from statistics import median

from statistics import mean

for stats in body_stats:

    size = [stats['weight']/stats['height']]

median_size = median(size) 

mode_size = mode(size)

print(mode_size, median_size)

此代码似乎打印了上次进行的计算,而不是计算出众数/中位数。我假设这个结果是由于新的计算不是整个列表的一部分。它们被打印为每个值的一系列列表。


我如何让他们形成一个列表而不单独输入每个计算?


还有另一种方法可以从我创建的计算中找出统计计算吗?


感谢您的帮助!


慕田峪4524236
浏览 186回答 2
2回答

守着星空守着你

问题是您在每次迭代中都保存了一个项目的列表。相反,您可以使用生成器并将其提供给像这样的中值和模式。median_size = median(stats['weight']/stats['height'] for stats in body_stats)mode_size = mode(stats['weight']/stats['height'] for stats in body_stats)

梵蒂冈之花

您需要将每个项目附加到列表中。您目前正在使用这条线做什么:size = [stats['weight']/stats['height']]每次都创建一个包含单个元素的新列表。每次循环运行时,它都会用单元素列表覆盖大小变量你需要做的是from statistics import medianfrom statistics import meansize = [] # create a "size" variable that is the list typefor 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)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python