Code:
|
# get formula dictionary
dd = {}
for ca in self.chemAtoms:
if isinstance(ca, ChemAtom):
ss = ca.elementSymbol
ii = dd.get(ss)
if ii is None:
dd[ss] = 1
else:
dd[ss] = ii + 1
# generate formula
ll = [None] * (len(dd)*2)
next = 0
for ss in ('C', 'H'):
ii = dd.get(ss)
if ii is not None:
ll[next] = ss
ll[next+1] = str(ii)
del dd[ss]
next = next + 2
items = dd.items()
items.sort()
for ss, ii in items:
ll[next] = ss
ll[next+1] = str(ii)
next = next + 2
#
result = ''.join(ll)
|