[Tutor] Manipulating Dictionary values

Alan Gauld alan.gauld at yahoo.co.uk
Mon Dec 26 06:11:54 EST 2016


On 26/12/16 08:03, Sunil Tech wrote:
> Hi Team,
> 
> Dictionary is like
> 
> a = {'a': 'New', 'b': 'Two', 'l': [{'k': 'test', 'm': 'again'}, {'k':
> 'test', 'm': 'again'}]}
> 
> I am trying to modify a value in the dictionary value at a['l']

So make life easy for yourself and get rid of the outer dictionary
and use the python prompt to experiment:

>>> L = [{'k': 'test', 'm': 'again'}, {'k': 'test', 'm': 'again'}]
>>> [{'k':d['k'],'m':'replaced'} for d in L]
[{'k': 'test', 'm': 'replaced'}, {'k': 'test', 'm': 'replaced'}]
>>>

But that's not very general, you really should have a generator
for the dictionary that has a conditional expression within to
replace the m. But that means having a generator within a
comprehension inside a dictionary access.

It's all getting a bit ugly and overly complex and our goal as
programmers is to write clear, easily maintainable code, so
this is probably a bad idea.

Better to unroll into an explicit loop and make it obvious
what you are doing.

for d in a['l']: d['m'] = 'replaced'

Isn't that clearer?

-- 
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/
http://www.amazon.com/author/alan_gauld
Follow my photo-blog on Flickr at:
http://www.flickr.com/photos/alangauldphotos




More information about the Tutor mailing list