私は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} )
つまり、100 ほどのソースを調べたら、オブジェクト番号のスペクトルにアクセスできます。20 で、spectrumSource20 = sourceData[20]['spectrum'] など。
私がやりたいことは、「形態学」というキーワードの値に基づいて、辞書内のすべてのオブジェクトを選択できるようにすることです。たとえば、'morphology' のキーワードは、'simple' または 'complex' の値を取ることができます。とにかく、ループに頼らずにこれを行うことができますか? つまり、'morphology' キーワードの 'complex' 値を取るすべてのソースを含む新しい辞書を作成するようなことはできますか?
説明するのは難しいですが、Matlab で慣れ親しんだ論理インデックスを使用すると、次のようになります。
complexSourceDataDict = sourceDataDict[*]['morphology'=='complex']
(* はディクショナリ内のすべてのオブジェクトを示します)
とにかく - どんな助けでも大歓迎です!