gdbm objects not iterable?
Steve Holden
steve at holdenweb.com
Wed Oct 3 12:05:11 EDT 2007
[back on-list]
Laszlo Nagy wrote:
>
>> Ir probably would be helpful to add the method, but it might be tricky
>> to trap changes to the mapping as iteration proceeded: what kind of
>> isolation would you implement?
> Probably I would do the same that Python does with dicts:
>
> >>> d = {1:'a',2:'b',2:'c'}
> >>> for k in d:
> ... if d.has_key(k+1):
> ... del d[k+1]
> ... print k
> ...
> 1
> Traceback (most recent call last):
> File "<stdin>", line 1, in <module>
> RuntimeError: dictionary changed size during iteration
>
> >>> d = {1:'a',2:'b',2:'c'}
> >>> for k in d:
> ... del d[k+1]
> ... d[k+100] = 'XXX'
> Traceback (most recent call last):
> File "<stdin>", line 2, in <module>
> KeyError: 102
>
> E.g. I would not allow to change the keys of the gdbm object during
> iteration. I'm not sure how to detect "end of iteration" though.
>
> (Maybe I misunderstood your question.)
>
All I meant was that it's essential to trap this condition.
regards
Steve
--
Steve Holden +1 571 484 6266 +1 800 494 3119
Holden Web LLC/Ltd http://www.holdenweb.com
Skype: holdenweb http://del.icio.us/steve.holden
Sorry, the dog ate my .sigline
More information about the Python-list
mailing list