【问题标题】:How to construct a dictionary from two dictionaries in python? [duplicate]如何从python中的两个字典构造字典? [复制]
【发布时间】:2013-12-20 21:12:04
【问题描述】:

假设我有一本字典:

x = {"x1":1,"x2":2,"x3":3}

我还有另一本字典:

y = {"y1":1,"y2":2,"y3":3}

有没有什么巧妙的方法可以从前两个中提取第三个字典:

z = {"y1":1,"x2":2,"x1":1,"y2":2}  

【问题讨论】:

  • x3y3 发生了什么?
  • 对不起,我可能没有解释得很好。我不想添加整个两个字典来制作新字典。我只想要第一个中的一些键和第二个中的一些其他键然后创建一个新字典
  • @user2468276 我已经用你想要的更新了我的答案。
  • x = { **x, **y }

标签: python python-2.7


【解决方案1】:

试试这样的:

dict([(key, d[key]) for d in [x,y] for key in d.keys() if key not in ['x3', 'y3']])
{'x2': 2, 'y1': 1, 'x1': 1, 'y2': 2}

【讨论】:

    【解决方案2】:

    如果你想要全部 2 个字典:

    x = {"x1":1,"x2":2,"x3":3}
    y = {"y1":1,"y2":2,"y3":3}
    
    
    z = dict(x.items() + y.items())
    print z
    

    输出:

    {'y2': 2, 'y1': 1, 'x2': 2, 'x3': 3, 'y3': 3, 'x1': 1}
    

    如果你想要部分字典:

    x = {"x1":1,"x2":2,"x3":3}
    y = {"y1":1,"y2":2,"y3":3}
    
    keysList = ["x2", "x1", "y1", "y2"]
    z = {}
    
    for key, value in dict(x.items() + y.items()).iteritems():
        if key in keysList:
            z.update({key: value})
    
    print z
    

    输出

    {'y1': 1, 'x2': 2, 'x1': 1, 'y2': 2}
    

    【讨论】:

    • 第一个解决方案可以在 python2 中工作,但不能在 python3 中使用
    • @JpuntoMarcos 你是对的(一个旧答案),你可以将z = dict(list(x.items()) + list(y.items())) 用于python3,但请记住它更贵。
    【解决方案3】:

    您可以将copy 用于x,然后使用update 添加来自y 的键和值:

    z = x.copy()
    z.update(y)
    

    【讨论】:

      猜你喜欢
      • 2023-04-10
      • 2017-09-04
      • 1970-01-01
      • 2019-06-19
      • 2011-11-24
      • 1970-01-01
      • 2017-04-27
      • 1970-01-01
      • 2010-12-19
      相关资源
      最近更新 更多