Why are there no ordered dictionaries?

Christoph Zwerschke cito at online.de
Mon Nov 21 01:27:22 CET 2005


Fredrik Lundh wrote:
> if you restructure the list somewhat
>     d = (
>         ('pid', ('Employee ID', 'int')),
>         ('name', ('Employee name', 'varchar')),
>         ('sal', ('Salary', 'float'))
>         )
> you can still loop over the list
> ...
> but you can easily generate an index when you need it:
>     index = dict(d)

That's exactly the kind of things I find myself doing too often and what 
I was talking about: You are using *two* pretty redundant data 
structures, a dictionary and a list/tuple to describe the same thing. 
Ok, you can use a trick to automatically create the dictionary from the 
tuple, but still it feels somewhat "unnatural" for me. A "ordered 
dictionary" would be the more "natural" data structure here.

I also wanted to mention the uglyness in the definition (nested tuples), 
but then I understood that even an ordered dictionary would not 
eliminate that uglyness, since the curly braces are part of the Python 
syntax and cannot be used for creating ordered dictionaries anyway. I 
would have to define the ordered dictionary in the very same ugly way:

d = odict(('pid', ('Employee ID', 'int')),
	('name', ('Employee name', 'varchar')),
	('sal', ('Salary', 'float')))

(Unless the Python syntax would be extend to use double curly braces or 
something for ordered dictionaries - but I understand that this is not 
an option.)

-- Christoph



More information about the Python-list mailing list