В настоящее время я реализую сложную микробную пищу в Интернете на Python, используя SciPy.integrate.ode. Мне нужна способность легко добавлять виды и реакции в систему, поэтому я должен кодировать что-то довольно общее. Моя схема выглядит примерно так:Является ли порядок словаря Python гарантированным за итерации?
class Reaction(object):
def __init__(self):
#stuff common to all reactions
def __getReactionRate(self, **kwargs):
raise NotImplementedError
... Reaction subclasses that
... implement specific types of reactions
class Species(object):
def __init__(self, reactionsDict):
self.reactionsDict = reactionsDict
#reactionsDict looks like {'ReactionName':reactionObject, ...}
#stuff common to all species
def sumOverAllReactionsForThisSpecies(self, **kwargs):
#loop over all the reactions and return the
#cumulative change in the concentrations of all solutes
...Species subclasses where for each species
... are defined and passed to the superclass constructor
class FermentationChamber(object):
def __init__(self, speciesList, timeToSolve, *args):
#do initialization
def step(self):
#loop over each species, which in turn loops
#over each reaction inside it and return a
#cumulative dictionary of total change for each
#solute in the whole system
if __name__==__main__:
f = FermentationChamber(...)
o = ode(...) #initialize ode solver
while o.successful() and o.t<timeToSolve:
o.integrate()
#process o.t and o.y (o.t contains the time points
#and o.y contains the solution matrix)
Итак, вопрос в том, когда я итерацию по словарям Species.sumOverAllReactionsForThisSpecies()
и FermentationChamber.step()
, является порядком итерации словарей гарантированно будут такими же, если ни один из элементов не будут добавлены или удалены из словарей между первой и последней итерацией? То есть, могу ли я предположить, что порядок массива numpy, созданный на каждой итерации из словаря, не изменится? Например, если словарь имеет формат {'Glucose': 10, 'Fructose': 12}, если Array, созданный из этого словаря, будет всегда имеет тот же порядок (неважно, что это за заказ, так как пока он детерминирован).
Извините за мега-пост, я просто хотел сообщить вам, откуда я.
@ChinmayKanchi не возражаете, если я серьезно отредактировал этот вопрос? Все детали о пищевых сетях и интеграции ODE не имеют ничего общего с вопросом, который является очень хорошим и важным. – LondonRob