data structure design question

Felix Thibault felixt at
Fri Feb 11 21:18:26 EST 2000

I'm thinking of trying to do some chemistry stuff in 
Python, and one of the things I was thinking of was
to define a Chemical (or Molecule) object. On paper
chemicals are represented by stuctures like:


so I thought I could initialize instances with some values
that mimic what we draw. All I've come up with so far is either

#make instances of the constituent elements
h1, h2, c, o = H(), H(), C(), O()
#initialize with a dictionary of who's connected to who
formaldehyde = Chemical({h1:[c], h2:[c], c:[h1, h2, o, o], o:[c, c]})

or else use lists of lists to mimic a connection matrix/table/... :

H  -010
H  0-10
C  11-2
O  002-


formaldehyde = Chemical([H, H, C, O], [[None, 0, 1, 0],
					     [0, None, 1, 0],
					     [1, 1, None, 2], 
					     [0, 0, 2, None]])

The dictionary method seems more condensed and readable, so I
am preferring it right now, even though I would have to make a
new instance for every atom of an element, but I was wondering
if there was a better way to do it altogether, and if anyone 
had advice or could recommend some books/websites that would help me think
about this kind of problem.




More information about the Python-list mailing list