【发布时间】:2018-09-30 12:10:53
【问题描述】:
我是使用字典的新手,我一直在寻找如何做到这一点,但我找不到这个特定问题的答案。
我有一个 4 级嵌套字典,在最后一级内我有感兴趣的值(数组)。它看起来像这样:
import numpy as np
A = np.array([1,2,3])
B = np.array([4,5,6])
C = np.array([7,8,9])
D = np.array([10,11,12])
E = np.array([13,14,15])
d={('domestic','dog','collie','old'):A,
('domestic','dog','golden','old'):B,
('domestic','dog','golden','young'):C,
('domestic','cat','siamese','young'):D,
('stray','dog','golden','old'):E}
我需要做的是在特定级别上对满足特定条件的所有数组进行操作。
例如,我需要在其第二层中包含“狗”一词的所有数组的平均值,无论它是家养的还是流浪的,或者是老的还是年轻的等等。
如果我需要同时满足多个条件怎么办?例如,平均所有年轻的狗。
感谢任何帮助!
编辑:我不使用 Pandas 的原因是因为我的数组有 2 个维度,我正在研究如何对每个“关键条件”的每个 (x,y) 进行操作。我现在通过一些答案/cmets 意识到我的标题问题如何不清楚,以及我提供的示例如何没有显示我真正打算做什么。很抱歉,我应该学会在漫长的一天工作后不要发帖。
在 Pandas 中,我一直使用所有值的平均值,但由于我需要在这里根据某些条件获取一组平均值,所以我认为使用 Pandas 无法做到这一点,所以经过一些研究,我认为最好的办法是开始使用字典来存储数据。
在我的示例中,我需要获得一个平均值数组 (x0,y0,z0)。例如,如果我想要所有“dogs”和“golden”的平均值,结果应该是
[ (B[0]+C[0])/2, (B[1]+C[1])/2, (B[2]+C[2])/2 ]
这可以使用 Pandas 实现吗?
【问题讨论】:
-
欢迎来到 SO。不幸的是,这不是一个讨论论坛或教程。请花时间阅读How to Ask 和该页面上的其他链接。花一些时间与the Tutorial 一起练习示例。它将让您了解 Python 提供的帮助您解决问题的工具。 “Can someone help me?” not an actual question?.
-
这听起来像是 Pandas 的工作。
-
@wwii 我之前已经阅读过“如何提问”,并且之前使用过教程。问题不是“帮助我”,而是“如何使用字典解决这个特定问题”。很抱歉,我的英语水平不足以让我在不使用示例的情况下提出问题(顺便说一句,这不是我的示例,而是它的一个非常简化的版本)。我也确实在发布之前研究过如何做到这一点,但老实说,如果我必须开始列出所有我尝试过但由于这个或其他原因而没有工作的东西,这将是一个永无止境的事情,很可能令人困惑,发帖。
-
这个问题太宽泛了(恕我直言),正如@AlexHall 建议的那样,这可以通过Pandas 来完成,并且您的示例数据将完全适合文档中的许多示例。然后,有许多方法可以使用循环和条件语句过滤字典中的项目,然后对结果项目值进行操作。 续
-
*cont'd... in operator 和可能的 operator.itemgetter 浮现在脑海中。循环和比较值的技术可以在教程中找到。
标签: python python-3.x dictionary nested