Python 填充嵌套字典

Python 填充嵌套字典,python,pandas,dictionary,Python,Pandas,Dictionary,在填充嵌套字典和保留以前填充的键时遇到问题。请参见此示例: 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})} 我的意图是fu

在填充嵌套字典和保留以前填充的键时遇到问题。请参见此示例:

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

任何建议

您每次都要重新分配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})

或者,您也可以求助于听写理解,因为内部听写可以节省一些查找:

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)}
您每次都在重新分配fulldict[key],是指fulldict[key][i]=pd.DataFrame{'x1':x1',y1':y1}。在外部for循环中需要fulldict[key]={}。