Reputation: 3657
I have a list
my_list = ['TTATGCTAAGTATC,TTATGCTAAGTATC,TTATGCTAAGTATC,TTATGCTAAGTATC,TTATGCTAAGTATC,TTATGCTAAGTATC,TTATGCTAAGTATC,TTATGCTAAGTATC', 'TTATGCTAAGTATC,TTATGCTAAGTATC,TTATGCTAAGTATC,TTATGCTAAGTATC,TTATGCTAAGTATC,TTATGCTAAGTATC,TTATGCTAAGTATC,TTATGCTAAGTATC', 'AGCTCCCCGTTTTC,AGCTCCCCGTTTTC']
I am trying to count the number of times each word occurs in the list. I used the code
from collections import Counter
for i in len(my_list):
... Counter(my_list[i]).most_common()
...
I get the error
Traceback (most recent call last): File "", line 1, in TypeError: 'int' object is not iterable
What am I doing wrong?
Upvotes: 1
Views: 108
Reputation: 6504
Instead of using for loop this solution has better time-complexity
from collections import Counter
my_list = ['TTATGCTAAGTATC,TTATGCTAAGTATC,TTATGCTAAGTATC,TTATGCTAAGTATC,TTATGCTAAGTATC,TTATGCTAAGTATC,TTATGCTAAGTATC,TTATGCTAAGTATC', 'TTATGCTAAGTATC,TTATGCTAAGTATC,TTATGCTAAGTATC,TTATGCTAAGTATC,TTATGCTAAGTATC,TTATGCTAAGTATC,TTATGCTAAGTATC,TTATGCTAAGTATC', 'AGCTCCCCGTTTTC,AGCTCCCCGTTTTC']
Counter(my_list)
This gives output here
Counter({'TTATGCTAAGTATC,TTATGCTAAGTATC,TTATGCTAAGTATC,TTATGCTAAGTATC,TTATGCTAAGTATC,TTATGCTAAGTATC,TTATGCTAAGTATC,TTATGCTAAGTATC': 2, 'AGCTCCCCGTTTTC,AGCTCCCCGTTTTC': 1})
Upvotes: 1
Reputation: 41862
For me it comes down to what the OP means by word. My interpretation is as follows:
for string in my_list:
print(Counter(string.split(',')).most_common())
producing:
[('TTATGCTAAGTATC', 8)]
[('TTATGCTAAGTATC', 8)]
[('AGCTCCCCGTTTTC', 2)]
Upvotes: 3
Reputation: 399723
Your iteration loop is mixing concepts. It should just be:
for i in my_list:
Counter(i).most_common()
You don't need to do the indexing.
This gives me:
[('T', 48), ('A', 32), ('C', 16), ('G', 16), (',', 7)]
[('T', 48), ('A', 32), ('C', 16), ('G', 16), (',', 7)]
[('C', 12), ('T', 10), ('G', 4), ('A', 2), (',', 1)]
Not sure how to interpret that, but perhaps you can. :)
Upvotes: 3