Apr-09-2018, 09:47 AM
I have a list like this:
This is what i got: ''TypeError: 'Subscription' object is not iterable''
lst = [(9600002, 42, 3), (9600001, 17, 3), (9600003, 11, 1), (9600002, 14, 5), (9600001, 17, 1), (9600003, 11, 4), (9600001, 17, 4), (9600001, 14, 3), (9600002, 42, 6), (9600002, 42, 1)]every tuple belongs to another class called Subscription
class Subscription:
def __init__(self, user_id, program_code, season_id):
self._user_id = user_id
self._program_code = program_code
self._season_id = season_id
def get_user_id(self):
return self._user_id
def get_program_code(self):
return self._program_code
def get_season_id(self):
return self._season_id
def __repr__(self):
return '(' + str(self._user_id) + ', ' + str(self._program_code) + ', ' + str(self._season_id) + ')'Below is what i am doing wrong. I am trying to use CounterThis is what i got: ''TypeError: 'Subscription' object is not iterable''
from collections import Counter
from subscription import Subscription
def main():
lst = load_subscriptions()
c = Counter() #this is where i got the error
for user, program, season in lst: #this is where i got the error
c[(user, program)] += 1 #this is where i got the error
def load_subscriptions():
from sys import stdin
lst = []
for line in stdin:
user_id, program_code, season_id = (int(x) for x in line.split())
if program_code != 42:
lst.append(Subscription(user_id, program_code, season_id))
return lst
if __name__ == "__main__":
main()Then how could get this problem fixed? Any help would be appreciated!
