【发布时间】:2012-11-07 01:58:07
【问题描述】:
我是 Python 的新手,决定从 Matlab 跳出来。几天来我一直试图找到问题的答案,但没有成功!
问题:我有一堆具有某些属性的对象。请注意,我不是在谈论这个词的编程意义上的对象和属性 - 我是在谈论文字天文对象,我有不同类型的数值数据和物理属性。
在我的脚本循环中,我遍历目录中的每个源/对象,进行一些计算,然后将结果保存在一个巨大的字典中。脚本的形式是这样的:
for i in range ( len(ObjectCatalogue) )
calculate quantity1 for source i
calculate quantity2 for source i
determine attribute1 for source i
sourceDataDict[i].update( {'spectrum':quantity1} )
sourceDataDict[i].update( {'peakflux':quantity2} )
sourceDataDict[i].update( {'morphology':attribute1} )
因此,一旦我浏览了大约一百个来源,我就可以访问第 1 号物体的光谱。 20 with spectrumSource20 = sourceData[20]['spectrum'] etc.
我想要做的是能够根据关键字'morphology'的值选择字典中的所有对象说。所以说“形态学”的关键字可以采用“简单”或“复杂”的值。无论如何我可以在不诉诸循环的情况下做到这一点吗? IE。 - 我可以做一些事情,比如创建一个新字典,其中包含所有为“morphology”关键字取“complex”值的来源吗?
很难解释,但是使用我在 Matlab 中习惯的逻辑索引,它看起来像
complexSourceDataDict = sourceDataDict[*]['morphology'=='complex']
(其中*表示字典中的所有对象)
无论如何 - 任何帮助将不胜感激!
【问题讨论】:
-
视情况而定。
sourceDataDict是什么?它实际上是一本字典,还是一个包含字典的列表? -
您可能想查看名为
pandas的库。它提供了一个表格数据结构,允许您随意访问。
标签: python indexing dictionary