2017-03-09 14 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'

現在,我明白你的實際代碼中的變量名稱可能與這個簡化的例子不同,但同樣的問題仍然會讓你感到沮喪:一般來說,一個對象不能告訴你它綁定了什麼名字到。它可能會綁定到多個名稱,或者根本沒有。

您將不得不重新考慮對變量名稱的處理方法。