Вы можете использовать понимание списка:
>>> 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'}]
Если вы все еще настаиваете на использовании map
и лямбда-выражении (которое делает то же самое, только немного медленнее):
>>> 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'}]
Кстати, причина, по которой ваш подход не работал должным образом, заключается в том, что .update()
изменяет словарь на месте, а не создает новый словарь, отражающий обновление. Он также не возвращает результат, поэтому лямбда-выражение оценивается как None
(и вы, вероятно, получили список типа [None, None, None, None]
.