Reputation: 3
I have a class where I assign a rating to each instance.
class Team:
def __init__(self, rating):
"Initialize team with rating"
self.rating = rating
I would like to be able to loop over a list of ratings, and create an instance for each rating, so if I have a list of ratings and team names, something like this:
scores = [10, 11, 12, 13]
teams = ['tm0', 'tm1', 'tm2', 'tm3']
for t, s in zip(teams, scores):
t = Team(s)
tm2.rating # returns 12
The above is not defining an instance of Team like I want it to.
I am new to Python so suspect there is an easy fix, or a more Pythonic way of doing this.
Upvotes: 0
Views: 68
Reputation: 530872
You appear to want a dict
that maps each team name to an instance of Team
.
scores = [10, 11, 12, 13]
team_names = ['tm0', 'tm1', 'tm2', 'tm3']
teams = {t: Team(s) for t, s in zip(team_names, scores)}
assert teams['tm0'].rating == 10
Upvotes: 3
Reputation: 2076
You can achieve what you want here with exec:
for t,s in zip(teams, scores):
exec(f"{t} = Team({s})")
Upvotes: 0