[Tutor] Nested dictionary with defaultdict

Kent Johnson kent37 at tds.net
Wed Apr 16 04:17:08 CEST 2008


GTXY20 wrote:
> 
> Hi tutors,
> 
> I currently have a dictionary like the following:
> 
> {'1': ['220', '220', '220''], '2': ['220', '238', '238', '238', '238'], 
> '3': ['220', '238'], '4': ['220', '220'], '5': ['220', '220', '238'], 
> '6': ['238', '238'], '7': ['220']}
> 
> I am trying to create a dictionary that would list the current key and a 
> count of the iterations of values within the value list like so:
> 
> {'1': {'220' : 3}, '2': {'220' : 1}, 2: {238 : 4}, '3': {'220' : 1}, 3: 
> { '238' : 1}, '4': {220 : 2}, '5': {'220: 2}, '5': {238 : 1}, '6': 
> {'238' : 2}, '7': {'220' : 1}}

?? Do you really want keys of '2' and 2? How can you have two keys '5'? 
I guess maybe you want
{'1': {'220' : 3}, '2': {'220' : 1, 238 : 4}, '3': {'220' : 1, '238' : 
1}, '4': {220 : 2}, '5': {'220: 2, 238 : 1}, '6': {'238' : 2}, '7': 
{'220' : 1}}

> Now I am pretty sure that I need to loop through the first dictionary 
> and create a defaultdict from the values for each key in that dictionary 
> but at this point I am having difficulty coming up with the loop.
> 
> I am looking for a satrting point or any suggestions.

Do you know how to turn
['220', '238', '238', '238', '238']
into
{'220' : 1, '238' : 4}
?

If so, then put that code in a loop over the key, value pairs of the dict.

Kent


More information about the Tutor mailing list