加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 通过字典的复杂迭代

发布时间:2020-12-20 11:32:19 所属栏目:Python 来源:网络整理
导读:我是 Python和编程的新手.试图寻找答案,但我真的在努力解决这个问题.非常感谢任何帮助. 我在字典中的数据如下: averages_dict = {'probe1': [8.1,7.9,8.2],'probe2': [7.8,7.5,7.7],'probe3': [7.1,6.6,6.8],'probe4': [6.7,6.3,6.5]} 其中列表中的项目(值)
我是 Python和编程的新手.试图寻找答案,但我真的在努力解决这个问题.非常感谢任何帮助.

我在字典中的数据如下:

averages_dict = {'probe1': [8.1,7.9,8.2],'probe2': [7.8,7.5,7.7],'probe3': [7.1,6.6,6.8],'probe4': [6.7,6.3,6.5]}

其中列表中的项目(值)对应于不同的个体[A,B,C].

我正在尝试编写一个脚本来获取每个人(值列表[A,C]中的项目)的probe1,probe2和probe3(averages_dict中的键)的平均值.最后,我想要一个探针平均值列表,每个人[ave(A),ave(B),ave(C)].

我希望这是有道理的,但有希望让我更清楚.

所以我试图编写一个首先启动空列表(vals)的for循环,追加每个探测列表的第一个项目(值),计算该位置的平均值(个体),然后将此平均值附加到新列表(平均值).

即在第一次averages_dict迭代后(这是每个列表中的第一个位置),这就是我想要的:

vals = [8.1,7.8,7.1,6.7]

然后计算此列表的平均值并将平均值附加到新列表(平均值)
我可以轻松地使用此代码执行大部分操作:

vals = []
for item in averages_dict:
    vals.append(averages_dict[item][0])

ave_dict = dict()
i=0
for val in vals:
    i = i + val

ave = i / len(vals)

我正在努力的是,如何再次从字典的开头重新迭代,在列表的第二个位置,依此类推,以便获得每个人的最终平均列表,如下所示:

averages = [7.425,7.075,7.3]

我意识到我可能需要某种计数器和while或for循环之前的这段代码,但是无法弄清楚是什么?

在此先感谢 – 任何建议或帮助将不胜感激.

解决方法

我想你想要的是:

averages = [sum(items)/len(items)
            for items in zip(*averages_dict.values())]

这是一个列表理解,它的作用是:

>将字典中的每组值压缩在一起,这样就可以获得三个人中每个人的值列表,而不是每个探针的值列表;
>循环通过每个人;
>将该人的读数总和除以个人的读数(len);和
>创建平均值列表.

我明白了:

[7.425000000000001,7.074999999999999,7.3]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读