2017-04-12 165 views
0

無法填充嵌套字典並保留以前填充的鍵。看看這個例子:填充嵌套字典

fulldict={} 
keys=['key1', 'key2', 'key3'] 

for key in keys: 
    for i in xrange(3): 
     x1 = np.random.randn(10) 
     y1 = np.random.randn(10) 
     fulldict[key] = {i:pd.DataFrame({'x1':x1, 'y1': y1})} 

我的意圖是,fulldict['key1']應該包含3個詞典與鍵0,1,2。但只有最後一個鍵(2)被存儲。

任何建議表示讚賞

+1

您重新分配'fulldict [關鍵]'每次,你的意思'fulldict [關鍵] [i] = PD .DataFrame({'x1':x1,'y1':y1})'。你需要在外部for循環中使用'fulldict [key] = {}'。 – AChampion

回答

1

你每次都重新分配fulldict[key],所以初始化fulldict[key] = {}和使用i作爲重點:

for key in keys: 
    fulldict[key] = {} 
    for i in xrange(3): 
     x1 = np.random.randn(10) 
     y1 = np.random.randn(10) 
     fulldict[key][i] = pd.DataFrame({'x1':x1, 'y1': y1}) 
0

或者你可以求助於字典修真內字典(節省幾個查找):

import numpy as np 

fulldict={} 
keys=['key1', 'key2', 'key3'] 

draw = np.random.randn 
for key in keys: 
    fulldict[key] = {i: pd.DataFrame({'x1': draw(10), 'y1': draw(10)}) 
        for i in xrange(3)}