Best way to define multidimensional dictionaries in python?
data-structures, dictionary, python
Solution
Tuples are hashable. Probably I'm missing the point, but why don't you use a standard dictionary with the convention that the keys will be triples? For example:
userdict = {}
userdict[('site1', 'board1', 'username')] = 'tommy'
Problem
I'm currently using the method below to define a multidimensional dictionary in python. My question is: Is this the preferred way of defining multidimensional dicts? ``` from collections import defaultdict def site_struct(): return defaultdict(board_struct) def board_struct(): return defaultdict(user_struct) def user_struct(): return dict(pageviews=0,username='',comments=0) userdict = defaultdict(site_struct) ``` to get the following structure: ``` userdict['site1']['board1']['username'] = 'tommy' ``` I'm also using this to increment counters on the fly for a user without having to check if a key exists or is set to 0 already. E.g.: ``` userdict['site1']['board1']['username']['pageviews'] += 1 ```