代码之家  ›  专栏  ›  技术社区  ›  BCS

如何使用列表理解将元素添加到字典的副本中?

  •  12
  • BCS  · 技术社区  · 14 年前

    鉴于:

    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)
    

    但这是一个有点冗长,没有什么优势,我试图取代。

    这个稍微更一般 question on merging dictionaries

    1 回复  |  直到 7 年前
        1
  •  26
  •   unutbu    14 年前
    [dict(template,z=value) for value in add]
    

    或(使用) k

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