Wells 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 > > 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.
This is not a list as key, it's a nested dictionary. There are several approaches to this: - make your keys tuples, like this: >>> teams[(team, "roster") = [...] - use setedfault: >>> teams.setdefault(team, {})["roster"] = ['player1'] - defaultdict >>> from collections import * >>> defaultdict <type 'collections.defaultdict'> >>> teams = defaultdict(dict) >>> teams["team"]["roster"] = ["player1"] >>> teams defaultdict(<type 'dict'>, {'team': {'roster': ['player1']}}) >>> Diez -- http://mail.python.org/mailman/listinfo/python-list