问题 如何使用列表推导将元素添加到字典的副本?


给定:

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

我想使用list comprehension来生成

[{'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)

但它有点冗长,并没有超出我想要取代的优势。

这略多一般 关于合并词典的问题 有些相关,但或多或​​少说不。


4339
2017-07-07 17:35


起源



答案:


[dict(template,z=value) for value in add]

或(使用 k):

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

16
2017-07-07 17:39



@Prelude:糟糕,是的。谢谢! - unutbu
顺便说一句:什么是 **?链接? - BCS
**用于将字典用作关键字参数 docs.python.org/tutorial/... - Xavier Combelle


答案:


[dict(template,z=value) for value in add]

或(使用 k):

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

16
2017-07-07 17:39



@Prelude:糟糕,是的。谢谢! - unutbu
顺便说一句:什么是 **?链接? - BCS
**用于将字典用作关键字参数 docs.python.org/tutorial/... - Xavier Combelle