Attualmente sto implementando un complesso microbial food-web in Python usando SciPy.integrate.ode. Ho bisogno della capacità di aggiungere facilmente specie e reazioni al sistema, quindi devo codificare qualcosa di abbastanza generale. Il mio schema simile a questa:L'ordine di un dizionario Python è garantito su iterazioni?
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)
Quindi, la domanda è, quando ho scorrere i dizionari in Species.sumOverAllReactionsForThisSpecies()
e FermentationChamber.step()
, è l'ordine di iterazione dei dizionari garantiti per essere lo stesso se vengono aggiunti o rimossi senza elementi dai dizionari tra la prima e l'ultima iterazione? Cioè, posso supporre che l'ordine della matrice numpy creata ad ogni iterazione dal dizionario non varierà? Ad esempio, se un dizionario ha il formato {'Glucose': 10, 'Fructose': 12}, se una matrice creata da questo dizionario sarà sempre nello stesso ordine (non importa quale sia l'ordine, come finché è deterministico).
Scusate per il mega-post, volevo solo farvi sapere da dove vengo.
@ChinmayKanchi ti dispiace se modifico pesantemente questa domanda? Tutti i dettagli sulle reti alimentari e sull'integrazione delle ODE non hanno nulla a che fare con la domanda, che è molto buona e importante. – LondonRob