Sounds to me like the best solution is to simplify the implementation
and dispense with the list alternative.  Why use a list if a dictionary
is suitable?  Don't say performance: that's premature optimization.
Dictionaries already have what you need, apparently, with setdefault(),
so just use them and keep the code simple.

You are right that if I use all dictionaries, I can use a.setdefault(4,{}).setdefault(2,0) to access a[4][2]. Not too bad compared to the getItem function.

However, this is an scientific application. Data are stored internally in C format and exposed to Python as python array (arraymodule). I guess the best way is to modify the arraymodule interface and stop it from raising an exception when index is out of range. (similar to Ruslan's solution). But this means too much trouble for now.

I will use the df(a, idx, default) method and see if its performance is acceptable.

Thanks.
Bo

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to