Dictionary of Dicts question

Chris Rebert clp at rebertia.com
Thu Oct 16 16:44:21 EDT 2008


On Thu, Oct 16, 2008 at 12:19 PM, John Townsend <jtownsen at adobe.com> wrote:
> I'm working with a Dictionary of Dicts. Something like this:
>
> myDict = {
>                                                 'TestName': {
>                                                                 'FileName':{
>
> 'ct_init':1234,
>
> 'psl_init':5678,
>
> 'total_test_time':7890,
>
> 'psl_shutdown':8765,
>
> 'ct_shutdown':9021,
>
> 'total_time':3421,
>                                                                 },
>                                                 }
> }
>
> Accessing values is pretty straightforward (nice change from my Perl days).
> For example:
>
> myDict['TestName']['FileName']['ct_shutdown']
>
> in Python interpreter yields
>
> 9021
>
> However, when I try to add, let's say, a new FileName entry, I end up
> replacing the previous FileName entry.
>
> In Python interpreter, I try:
>
> myDict['TestName'] = {'NewFileName': {}, }
>
> I get
>
> {'TestName': {'NewFileName': {}}}

Right, this clobbers the existing entry with this new blank one. This
is evidenced by the fact that you're performing an _assignment_ on a
dictionary key rather than calling a _mutator_ method on a dictionary
value. A dictionary has only one value for a given key (but
importantly, that value can be a list).

>
> So, how do I add a new entry without replacing the old entry?

Switch to a Dict of Lists of Dicts and append to the appropriate list
when adding the new entry, or preferably, start using objects instead
of ad-hoc nested dictionaries.

Regards,
Chris
-- 
Follow the path of the Iguana...
http://rebertia.com

>
> Thanks
>
> John Townsend (5-7204),
> AGM-FL and PSL QE Lead
>
>
>
> --
> http://mail.python.org/mailman/listinfo/python-list
>
>



More information about the Python-list mailing list