[Tutor] Update values stored as a list in a dictionary with values from another dictionary

John Fouhy john at fouhy.net
Tue Oct 2 08:05:38 CEST 2007


On 02/10/2007, GTXY20 <gtxy20 at gmail.com> wrote:
> Hello all,
>
> Let's say I have the following dictionary:
>
> {1:(a,b,c), 2:(a,c), 3:(b,c), 4:(a,d)}
>
> I also have another dictionary for new value association:
>
> {a:1, b:2, c:3}
>
> How should I approach if I want to modify the first dictionary to read:
>
>  {1:(1,2,3), 2:(1,3), 3:(2,3), 4:(1,d)}
>
> There is the potential to have a value in the first dictionary that will not
> have an update key in the second dictionary hence in the above dictionary
> for key=4 I still have d listed as a value.

You could use the map function...

Let's say we have something like:

transDict = { 'a':1, 'b':2, 'c':3 }

We could define a function that mirrors this:

def transFn(c):
    try:
        return transDict[c]
    except KeyError:
        return c

Then if you have your data:

data = { 1:('a','b','c'), 2:('a','c'), 3:('b','c'), 4:('a','d')}

You can translate it as:

for key in data.keys():
    data[key] = map(transFn, data[key])

HTH!

-- 
John.


More information about the Tutor mailing list