nested data structures in classes

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Joel Forrest Moxley

    nested data structures in classes

    Greetings python-list!

    The good news is that I've been having a blast with Python since early
    Spring. I've had great success in both learning the language from online
    / usegroup resources and implementing it in one of my projects. However,
    I can't pretend to be an expert, and I do not have a strong comp sci
    background.

    This is a question that I've had for a while. Usually, I'll stumble
    across the answer with repeated attempts and re-searching the groups, but
    I didn't have luck with this one, even in a Dietel book I picked up at the
    library. I'm assuming there's an obvious answer, so maybe ya'll can save
    me some time.

    My Python use involves organizing nested list information. In a
    simplified example, you could imagine a list of reactants and products in
    a chemical reaction. Thus,

    len(nested_list _of_reactants) = len(nested_list _of_products) => "number of
    reactions"
    where: nested_list_of_ reactants[i] => "list of reactants for reaction i"
    where: nested_list_of_ reactants[i][j] => "reactant j of reaction i"

    And so forth. Obviously, there are many attributes associated with a
    specific reaction. Currently, I just pass these attribute lists (nested
    and non-nested) into and out of functions. However, I'd like to be able
    to create a class that would streamline this.

    E.g., (this is a MATLAB structure whose qualities I'd like to emulate):
    reaction(27).na me = 'fawlty towers'
    reaction(27).re actant(2).name = 'john cleese'

    Currently, I'd have a list and a nested list to take care of this...
    reaction_name[27] = 'fawlty towers' and reactants[27][2] = 'john cleese'
    if this makes sense.

    Any thoughts or suggestions on this type of data structuring would be
    greatly appreciated. Python love, Joel


  • Joel

    #2
    Re: nested data structures in classes

    Does anyone have any thoughts on this?

    Joel Forrest Moxley <jfmoxley@MIT.E DU> wrote in message news:<mailman.1 061749909.28327 .python-list@python.org >...[color=blue]
    > Greetings python-list!
    >
    > The good news is that I've been having a blast with Python since early
    > Spring. I've had great success in both learning the language from online
    > / usegroup resources and implementing it in one of my projects. However,
    > I can't pretend to be an expert, and I do not have a strong comp sci
    > background.
    >
    > This is a question that I've had for a while. Usually, I'll stumble
    > across the answer with repeated attempts and re-searching the groups, but
    > I didn't have luck with this one, even in a Dietel book I picked up at the
    > library. I'm assuming there's an obvious answer, so maybe ya'll can save
    > me some time.
    >
    > My Python use involves organizing nested list information. In a
    > simplified example, you could imagine a list of reactants and products in
    > a chemical reaction. Thus,
    >
    > len(nested_list _of_reactants) = len(nested_list _of_products) => "number of
    > reactions"
    > where: nested_list_of_ reactants[i] => "list of reactants for reaction i"
    > where: nested_list_of_ reactants[i][j] => "reactant j of reaction i"
    >
    > And so forth. Obviously, there are many attributes associated with a
    > specific reaction. Currently, I just pass these attribute lists (nested
    > and non-nested) into and out of functions. However, I'd like to be able
    > to create a class that would streamline this.
    >
    > E.g., (this is a MATLAB structure whose qualities I'd like to emulate):
    > reaction(27).na me = 'fawlty towers'
    > reaction(27).re actant(2).name = 'john cleese'
    >
    > Currently, I'd have a list and a nested list to take care of this...
    > reaction_name[27] = 'fawlty towers' and reactants[27][2] = 'john cleese'
    > if this makes sense.
    >
    > Any thoughts or suggestions on this type of data structuring would be
    > greatly appreciated. Python love, Joel[/color]

    Comment

    • Joel

      #3
      Re: nested data structures in classes

      For posterity, here's what ended up working. Many thanks to Tom Minka
      for showing me this. I understood the class stuff in principle, but I
      just couldn't implement correctly.

      class ReactionClass:
      def __init__(self,N ame='',Reactant =[],Product=[]):
      self.Name = Name
      self.Reactant = Reactant
      self.Product = Product
      def __str__(self):
      # how to print the object
      return self.Name+': '+str(self.Reac tant)+' ->
      '+str(self.Prod uct
      )

      Reaction = []
      # two different ways of defining a reaction
      Reaction.append (ReactionClass( 'Kinase',['GLUC', 'ATP'],['G6P',
      'ADP']))
      print(Reaction[0].Name)
      print(Reaction[0])
      Reaction.append (ReactionClass( ))
      Reaction[1].Name = 'and so on'
      Reaction[1].Reactant = ['one', 'two']
      Reaction[1].Product = 'something else'
      print(Reaction[1])
      print(Reaction[1].Reactant[1])



      jfmoxley@mit.ed u (Joel) wrote in message news:<e31c4866. 0308291220.776a 92a5@posting.go ogle.com>...[color=blue]
      > Does anyone have any thoughts on this?
      >
      > Joel Forrest Moxley <jfmoxley@MIT.E DU> wrote in message news:<mailman.1 061749909.28327 .python-list@python.org >...[color=green]
      > > Greetings python-list!
      > >
      > > The good news is that I've been having a blast with Python since early
      > > Spring. I've had great success in both learning the language from online
      > > / usegroup resources and implementing it in one of my projects. However,
      > > I can't pretend to be an expert, and I do not have a strong comp sci
      > > background.
      > >
      > > This is a question that I've had for a while. Usually, I'll stumble
      > > across the answer with repeated attempts and re-searching the groups, but
      > > I didn't have luck with this one, even in a Dietel book I picked up at the
      > > library. I'm assuming there's an obvious answer, so maybe ya'll can save
      > > me some time.
      > >
      > > My Python use involves organizing nested list information. In a
      > > simplified example, you could imagine a list of reactants and products in
      > > a chemical reaction. Thus,
      > >
      > > len(nested_list _of_reactants) = len(nested_list _of_products) => "number of
      > > reactions"
      > > where: nested_list_of_ reactants[i] => "list of reactants for reaction i"
      > > where: nested_list_of_ reactants[i][j] => "reactant j of reaction i"
      > >
      > > And so forth. Obviously, there are many attributes associated with a
      > > specific reaction. Currently, I just pass these attribute lists (nested
      > > and non-nested) into and out of functions. However, I'd like to be able
      > > to create a class that would streamline this.
      > >
      > > E.g., (this is a MATLAB structure whose qualities I'd like to emulate):
      > > reaction(27).na me = 'fawlty towers'
      > > reaction(27).re actant(2).name = 'john cleese'
      > >
      > > Currently, I'd have a list and a nested list to take care of this...
      > > reaction_name[27] = 'fawlty towers' and reactants[27][2] = 'john cleese'
      > > if this makes sense.
      > >
      > > Any thoughts or suggestions on this type of data structuring would be
      > > greatly appreciated. Python love, Joel[/color][/color]

      Comment

      Working...