如何在Python中将有序字典的键更改为其他有序字典的键?

San*_*ram 2 python dictionary ordereddictionary

我有两个命令的字典D1D2。我想要分配的键名D2D1(覆盖现有的键名D1)。怎么做?

例:

D1 = {'first_key': 10, 'second_key': 20}
D2 = {'first_new_key': 123, 'second_new_key': 456}
Run Code Online (Sandbox Code Playgroud)

现在我想的键名分配D2D1使D1成为

{'first_new_key': 10, 'second_new_key': 20}
Run Code Online (Sandbox Code Playgroud)

noa*_*got 5

这是一个解决方案:

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()