2017-04-12 1 views
0

Probleme beim Auffüllen eines verschachtelten Wörterbuch und Beibehaltung zuvor gefüllte Schlüssel. siehe folgendes Beispiel:Bestückung eines Schachtelwörterbuchs

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})} 

meine Absicht ist, dass fulldict['key1'] 3 Wörterbücher 0,1,2 mit den Tasten enthalten soll. aber nur die letzte Taste (2) wird gespeichert.

Anregungen geschätzt

+1

Sie sind die 'fulldict [key]' jedes Mal neu zuzuweisen, meinten Sie 'fulldict [key] [i] = pd .DataFrame ({'x1': x1, 'y1': y1}) '. Sie benötigen 'fulldict [key] = {}' in der äußeren for-Schleife. – AChampion

Antwort

1

Du Neuzuweisung der fulldict[key] jedes Mal, so initialisieren fulldict[key] = {} und verwenden i als Schlüssel:

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

Oder Sie auf ein dict Verständnis für die innere dict greifen konnte (spart ein paar Lookups):

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)} 
Verwandte Themen