为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕田峪4524236 2021-11-16 10:42:45
我有一个字典列表,我从每个字典中提取了两个值,并相互除以创建一个新项目。我想找到这些新项目的众数和中位数。其中有很多,所以我不想输入每个新项目来形成列表。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)


查看完整回答
反对 回复 2021-11-16
?
梵蒂冈之花

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)


查看完整回答
反对 回复 2021-11-16
  • 2 回答
  • 0 关注
  • 185 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信