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