using datetime containers
Arnaud Delobelle
arnodel at googlemail.com
Sun Nov 9 01:49:02 EST 2008
indika <indikabandara19 at gmail.com> writes:
> while trying out the sorting method i realized that u can *never*
> insert the sorted data to dict !!!
>>>> m1
> {datetime.date(2008, 1, 1): 'b', datetime.date(2008, 1, 3): 'c',
> datetime.date(2008, 1, 2): 'a'}
>
>>>> l = sorted(m1.items(), cmp=cmpr) // cmpr is date comp function
>>>> for i, j in l:
> ... m3[i] = j;
> ...
>>>> m3
> {datetime.date(2008, 1, 1): 'b', datetime.date(2008, 1, 3): 'c',
> datetime.date(2008, 1, 2): 'a'}
>
> so then there's no point in sorting.
> it will only be possible to do a linear search i.e. sort and add to
> list then search from top.
That's because dicts are the wrong data structure for this. Dicts are
implemented as hashtables. You can use lists instead: look at the
module bisect. There aren't any linear structures with fast insertion
in standard Python (e.g. d-linked lists or balanced trees).
> I would really like to suggest some wrapper or an enhanced dict
> structure which has a configurable comparison function that will be
> used to insert and find keys.
> this will help, for example, if we want to go to a specific key and
> iterate from there onwards
I'm sure that googling for 'python sorted dict' with yield useful
information and probably some implementations.
--
Arnaud
More information about the Python-list
mailing list