[Python-Dev] Dictionary sparseness (original) (raw)

Brett Cannon drifty@alum.berkeley.edu
Sun, 4 May 2003 16:27:16 -0700 (PDT)


[Raymond Hettinger]

I have two competing proposals to expose dictresize():

1) d.resize(minsize=0) The first approach allows a user to trigger a resize(). This is handy after deletions have taken place and dictionary contents have become stable. It allows the dictionary to be rebuilt without dummy entries. <snip - explanation of method>

The issue I see with this is people going overboard with calls to this. I can easily imagine a new Python programmer calling this after every insertion or deletion into the dictionary. I can even see experienced programmer getting trapped into this by coming up with a size and then coding themselves into a corner by trying to maintain the size. I also see people coding a size that is optimal and then changing their code but forgetting to change the value passed to the method, thus negating the perk of having this option set

2) d.setsparsity(factor=1)

The second approach does not allow dictionaries to be pre-sized, but the effects do not get wiped out by normal dictionary activity.

This is more reasonable. Since it is a factor it will makes sense to beginners who view it as a sliding scale and also allows more experienced programmers to set it to where they know they want the performance. And setting the value will more than likely be good no matter how the code is changed since the use of the dictionary will most likely stay consistent.

Do either hinder dictionary performance just by introducing the possible functionality?

I am -1 on 'resize' and +0, teetering on +1, for setsparsity. I will kick over to +1 if someone else out there with more experience with newbies can say strongly that they don't see them messing up with this option.

-Brett

P.S.: Thanks, Raymond, for doing all of this work and documenting it so well.