2017-04-12 233 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)}