如何使用列表3中的字典中的字典值从新的计算中创建统计计算

时间:2019-02-22 00:37:12

标签: python list dictionary math statistics

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

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)

这似乎是打印最后一次计算,而不是计算出模式/中位数是什么-我认为这是因为新计算不属于一个整体列表。它们被打印为每个值的一系列列表。我如何让他们形成列表而不用分别键入每个计算?还是有另一种方法可以从我创建的计算中找出统计计算?

谢谢你的帮助!

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:1)

您需要将每个项目添加到列表中。此行当前正在做什么:

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

每次都用一个元素创建一个新列表。每次循环运行时,都会用一个单元素列表覆盖size变量

您需要做的是

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)