list_to_dict()

maney at pobox.com maney at pobox.com
Thu Jan 16 19:54:40 CET 2003


Skip Montanaro <skip at pobox.com> wrote:
> 
>    maney> def list_to_dict(aList, key_indexes, value_indexes):
>           ...
> 
> In 2.3 (and somewhat earlier I believe), you can call the dict() type like
> so:
> 
>    >>> dict([("one", 1), ("two", 2)])
>    {'two': 2, 'one': 1}

Which is a little bit like, but not usefully since the key is neither
always the first item nor necessarily a single item in the source
records.

> You can, of course, smash your keys and values lists together using zip():

Oh yeah, I do that quite a bit, too (though not in the program that
gave rise to dict_from_list).

> 
>    >>> zip(("one", "two"), (1, 2))
>    [('one', 1), ('two', 2)]

So for the current use I'd have something like

theDict = dict(zip([(r[1],r[2]) for r in aList],
                   [(r[0],r[2],r[3]) for r in alist]))

Hmmmm.  I can't say it looks like an improvement over the simple loop
to my eyes.  If anything it's buried the distinguishing features - the
original list and the lists of indexes - under a slightly greater
weight of scaffolding.

There's some food for thought about related uses here, though.  Thanks,
Skip!




More information about the Python-list mailing list