On 10/23/2011 08:01 AM, lina wrote:
On Sun, Oct 23, 2011 at 6:06 PM, Peter Otten<__pete...@web.de>  wrote:
lina wrote:

tobetranslatedparts=line.strip().split()
strip() is superfluous here, split() will take care of the stripping:

" alpha \tbeta\n".split()
['alpha', 'beta']

for residue in results:
     if residue not in unique:
         unique[residue]=1
     else:
         unique[residue]+=1
There is a dedicated class to help you with that, collections.Counter:

from collections import Counter
results = ["alpha", "beta", "gamma", "alpha"]
unique = Counter(results)
unique
Counter({'alpha': 2, 'beta': 1, 'gamma': 1})

Counter is a subclass of dict, so the stuff you are doing with `unique`
elswhere should continue to work.

This part I just wish the output in file like:

{'26SER': 2, '16LYS': 1, '83ILE': 2, '70LYS': 6}

as

26SER 2
16LYS 1
83ILE 2
70LYS 6
You can redirect the output of print() to a file using the `file` keyword
argument:

unique = {'26SER': 2, '16LYS': 1, '83ILE': 2, '70LYS': 6}
with open("tmp.txt", "w") as f:
...     for k, v in unique.items():
...             print(k, v, file=f)
I tested it in idle3, it has no problem achieving this.

But I am getting confused later:

def translate_process(dictionary,tobetranslatedfile):
     results=[]
     unique={}
     for line in open(tobetranslatedfile,"r"):
         tobetranslatedparts=line.strip().split()
         results.append(dictionary[tobetranslatedparts[2]])
         unique=Counter(results)
         with open(base+OUTPUTFILEEXT,"w") as f:
Every time you do this, you're truncating the file. It'd be better to open the file outside the for-line loop, and just use the file object in the loop.

             for residue, numbers in unique.items():
                 print(residue,numbers,file=f)

it still the same in the OUTPUTFILE as before,

  $ more atom-pair_6.txt
{'26SER': 2, '16LYS': 1, '83ILE': 2, '70LYS': 6, '55HIS': 5}

Thanks,

...
$ cat tmp.txt
26SER 2
83ILE 2
70LYS 6
16LYS 1
$


--

DaveA

_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to