San*_*ram 2 python dictionary ordereddictionary
我有两个命令的字典D1和D2。我想要分配的键名D2到D1(覆盖现有的键名D1)。怎么做?
例:
D1 = {'first_key': 10, 'second_key': 20}
D2 = {'first_new_key': 123, 'second_new_key': 456}
Run Code Online (Sandbox Code Playgroud)
现在我想的键名分配D2到D1使D1成为
{'first_new_key': 10, 'second_new_key': 20}
Run Code Online (Sandbox Code Playgroud)
这是一个解决方案:
keys = D2.keys()
values = D1.values()
new_dict = dict(zip(keys, values))
Run Code Online (Sandbox Code Playgroud)
如果您喜欢1-liners(这就是为什么我们有python,对吗?):
new_dict = dict(zip(D2.keys(), D1.values()))
Run Code Online (Sandbox Code Playgroud)
如评论中所述,两个字典之间的插入顺序必须匹配。
编辑
我发现您要覆盖D1。在这种情况下,您可以简单地执行以下操作:
D1 = dict(zip(D2.keys(), D1.values()))
Run Code Online (Sandbox Code Playgroud)
编辑2
正如巴尔玛(Barmar)在另一个答案中提到的那样,为了拥有字典,必须使用collections.OrderedDict()。