Я новичок в 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} )
Итак, после того, как я просмотрел сотню источников или около того, я могу, скажем, получить доступ к спектру для объекта №. 20 с SpectrumSource20 = sourceData [20] ['спектр'] и т. Д.
Что я хочу сделать, так это иметь возможность выбирать все объекты в словаре на основе значения ключевого слова «морфология», скажем. Скажем, ключевое слово «морфология» может принимать значения «простой» или «сложный». Есть ли способ сделать это, не прибегая к петле? Т.е. - Могу ли я сделать что-нибудь вроде создания нового словаря, содержащего все источники, которые принимают «сложное» значение для ключевого слова «морфология»?
Трудно объяснить, но при использовании привычной мне логической индексации из Matlab это выглядело бы примерно так:
complexSourceDataDict = sourceDataDict[*]['morphology'=='complex']
(где * обозначает все объекты в словаре)
В любом случае - любая помощь будет принята с благодарностью!