You can use list comprehension:
>>> d = {'fn' : 'Joseph', 'ln' : 'Randall', 'phone' : '100' } >>> lst = ['200', '300', '400', '500'] >>> [dict(d, phone=x) for x in lst] [{'ln': 'Randall', 'phone': '200', 'fn': 'Joseph'}, {'ln': 'Randall', 'phone': '300', 'fn': 'Joseph'}, {'ln': 'Randall', 'phone': '400', 'fn': 'Joseph'}, {'ln': 'Randall', 'phone': '500', 'fn': 'Joseph'}]
If you still insist on using map and lambda (which does the same thing, only a little slower):
>>> map(lambda x: dict(d, phone=x), lst) [{'ln': 'Randall', 'phone': '200', 'fn': 'Joseph'}, {'ln': 'Randall', 'phone': '300', 'fn': 'Joseph'}, {'ln': 'Randall', 'phone': '400', 'fn': 'Joseph'}, {'ln': 'Randall', 'phone': '500', 'fn': 'Joseph'}]
By the way, the reason your approach did not work properly is because
.update() modifies the dictionary in place, rather than creating a new dictionary that reflects the update. It also does not return a result, so the lambda evaluates to
None (and you probably returned a list like
[None, None, None, None] .