Как использовать списочное понимание, чтобы добавить элемент в копии словаря? - PullRequest
12 голосов
/ 07 июля 2010

учитывая:

template = {'a': 'b', 'c': 'd'}
add = ['e', 'f']
k = 'z'

Я хочу использовать списки для генерации

[{'a': 'b', 'c': 'd', 'z': 'e'},
 {'a': 'b', 'c': 'd', 'z': 'f'}]

Я знаю, что могу сделать это:

out = []
for v in add:
  t = template.copy()
  t[k] = v
  out.append(t)

но этонемного многословно и не имеет никакого преимущества перед тем, что я пытаюсь заменить.

Этот немного более общий вопрос о слиянии словарей несколько связан, но более или менее говорит, что нет.

1 Ответ

17 голосов
/ 07 июля 2010
[dict(template,z=value) for value in add]

или (для использования k):

[dict(template,**{k:value}) for value in add]
...