Ordered Sets

Steven D'Aprano steve at REMOVE-THIS-cybersource.com.au
Fri Mar 20 23:46:07 EDT 2009


On Fri, 20 Mar 2009 11:50:28 -0700, Scott David Daniels wrote:

> Raymond Hettinger wrote:
>> [Aahz]
>>> The doubly-linked list part is what's sick and perverted.
>> 
>> The doubly-linked list part is what gives it big-oh running times the
>> same as regular sets.  If the underlying sequence is stored as a list,
>> then deletion goes from O(1) to O(n). If the insertion times are
>> recorded in a dictionary, then the insertion order has to be sorted
>> prior to iteration which makes iteration go from O(n) to O(n log n).
> 
> The double-linked list part could be done with weakrefs and perhaps Aahz
> would relax a bit.

I'm not sure whether Aahz's description is meant to be taken seriously, 
or if there is a smiley hidden in his post. After all, doubly-linked 
lists are a standard building block in data structure design.

But assuming it is meant as a serious criticism, I'm not sure that I like 
the idea of using weakrefs. I think it is a feature, not a bug, that 
sets, lists and dicts keep a reference to the items in them. I think it 
would be bizarre if putting an item into an OrderSet meant that you 
needed to put it somewhere else as well to prevent it being garbage 
collected.

Or have I misunderstood the consequences of using weakrefs?



-- 
Steven



More information about the Python-list mailing list