2017-03-09 99 views
1

我想一个空的字典知道如何填充其他字典一个空的字典如下方式:填充与其他字典

newdict = {} 

dict1 = {"key1": "value1"} 
dict2 = {"key2": "value2"} 
dict3 = {"key3": "value3", "key4": "value4"} 

dicts_to_use = [dict1, dict3] 

因此使用列表来指定要包括哪些,以及newdict在这种情况下,应填充,使得它会显示:

{'dict1': {'key1': 'value1'}, 'dict3': {'key3': 'value3', 'key4': 'value4'}} 

进出口运行陷入困境参照列表中的词典和跨线穿越/字典类型

+8

看起来像'dicts_to_use'可能很容易成为字典 - 即''dicts_to_use = {'dict1':dict1,'dict3':dict3}' - 然后你就完成了,因为这就是你所要做的询问;-) – mgilson

回答

-5

使用eval。 (请注意,我改变dicts_to_use以包括类型的字典的名称,而不是类型的字典本身...)

>>> newdict = {} 
>>> 
>>> dict1 = {"key1": "value1"} 
>>> dict2 = {"key2": "value2"} 
>>> dict3 = {"key3": "value3", "key4": "value4"} 
>>> 
>>> dicts_to_use = ["dict1", "dict3"] 
>>> for d in dicts_to_use: 
...  newdict[d] = eval(d) 
... 
>>> newdict 
{'dict1': {'key1': 'value1'}, 'dict3': {'key3': 'value3', 'key4': 'value4'}} 
>>> 
+0

(为什么downvotes?我认为这是OP寻找的东西。) –

+2

'eval'是高度不安全的,它也导致错误的代码。当OP正在寻找这个时,你应该给他们一个合适的替代方案,而不是一支枪,他们可以在脚下自己开枪。 –

+0

@安德拉斯只是脚? –

2

你不能做到这一点。你不能这样做的原因是因为有no reliable way从对象dict1获取字符串'dict1'

现在,我明白你的实际代码中的变量名称可能与这个简化的例子不同,但同样的问题仍然会让你感到沮丧:一般来说,一个对象不能告诉你它绑定了什么名字到。它可能会绑定到多个名称,或者根本没有。

您将不得不重新考虑对变量名称的处理方法。