如何根据列表中字典中的值制成的新计算来创建统计计算,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)

此代码似乎打印了完成的最后计算,而不是确定模式/中位数是什么。我假设此结果是由于新计算不是整个列表的一部分。它们被打印为每个值的一系列列表。

我将如何使他们在不单独键入每个计算的情况下形成列表?

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

谢谢您的帮助!

问题是您在每次迭代中保存一个项目的列表。相反,您可以使用发电机并将其馈送到中位数和模式。

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 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)

最新更新