[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