On Thu, May 14, 2009 at 8:45 AM, Wells <we...@submute.net> wrote: > Why can't I do this? > > teams = { "SEA": "Seattle Mariners" } > for team, name in teams.items(): > teams[team]["roster"] = ["player1", "player2"] > I get an error: > > Traceback (most recent call last): > File "./gamelogs.py", line 53, in <module> > teams[team]["roster"] = ["player1", "player2"] > TypeError: 'str' object does not support item assignment
teams - a dict of str to str teams[team] - a string (specifically, "Seattle Mariners" in this case) teams[team]["roster"] - um, you can't subscript a string by another string; you can subscript it only by integer indices > You can see that I am trying to make a key called "roster" for each > team item in the dictionary, which is a list of players. I'd say you need to restructure your data structure by introducing another level of dictionaries: teams = { "SEA": {"full_name":"Seattle Mariners"} } for team, name in teams.items(): teams[team]["roster"] = ["player1", "player2"] print teams #output: {'SEA': {'full_name': 'Seattle Mariners', 'roster': ['player1', 'player2']}} Of course, it would probably be nicer if you did this using objects (e.g. define a Team class and have `teams` be a dict of str to Team. Cheers, Chris -- http://blog.rebertia.com -- http://mail.python.org/mailman/listinfo/python-list