[Tutor] how to unique the string
Dave Angel
d at davea.name
Mon Oct 24 00:40:44 CEST 2011
On 10/23/2011 08:01 AM, lina wrote:
> On Sun, Oct 23, 2011 at 6:06 PM, Peter Otten<__peter__ at 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
More information about the Tutor
mailing list