Daniel Klose wrote: > Thanks Kent, > > I now have: > > target = sys.argv[1] > > seqDictionary = {} # python 2.5 import defaultdict from collections. > structureArray = [0, 0, 0] > > #THIS TAKES THE PLACE OF THE STANDARD PERL $DIR,$file > #shorter to do the os.path.join once to a variable. > if (os.path.isfile(os.path.join(structDir, target)) and > os.path.isfile(os.path.join(seqDir, target))): > structureHandle = open(os.path.join(structDir, target)) > structureString = structureHandle.readline() > > sequenceHandle = open(os.path.join(seqDir, target)) > sequenceString = sequenceHandle.readline() > > if len(structureString) == len(sequenceString): > > for strChar, seqChar in zip(structureString, sequenceString): > #SET DEFAULT VALUE AS ZERO ELSE INCREMENT > seqDictionary[seqChar] = seqDictionary.get(seqChar, 0) + 1 > if (strChar.count('-')):
Since strChar is a single character you can just do if strChar == '-': etc. > structureArray[0] += 1 > elif (strChar.count('H')): > structureArray[1] += 1 > elif (strChar.count('E')): > structureArray[2] += 1 > else: You could put all of the above into a dict lookup, something like offsets = { '-': 0, 'H': 1, 'E': 2 } # this can be defined outside the loop offset = offsets.get(strChr) if offset is None: print strChar, " is not valid" else: structureArray[offset] += 1 Or you could just use another dict for structureArray and index it by strChar directly. > print strChar, " is not valid" > break; > else: > print "Some data is missing!\n" > > The reason I want to create a dictionary of lists is because for each of > the keys in the dictionary I wanted to keep tabs on the associated > structure. For example: > > dictionary[A] = [0,0,0] > > list x element = A > list y element = '-' > > then dictionary[A][0] = 1 > > print dictionary[A] > : [1, 0, 0] > > I thought that a dictionary would be the best way (it is the same way as > I have done it in perl and java). I am using google but having limited > success. You can easily make a dict whose values are lists or dicts. I'm not sure how the above pseudo-code fits in to your code but maybe you want something like this: structureArray = structureDict.get(seqChar, [0, 0, 0]) # figure out offset as above structureArray[offset] = 1 # or += 1 if you are keeping counts. > *Do you folks bottom post or top post? The users of the perl list are > sensitive about this stuff! We're pretty casual here on python-tutors but on comp.lang.python you will get scolded for top-posting and bottom-posting is more common here as well. > > I am only running python 2.4 and the system admin doesn't like me so I > won't ask him to upgrade it. _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor