Ho un dettato multidimensionale e mi piacerebbe essere in grado di recuperare un valore con una chiave: la coppia di chiavi e restituire 'NA' se la prima chiave non esiste . Tutti i sottotit hanno le stesse chiavi.Python dict.get() con dict multidimensionale
d = { 'a': {'j':1,'k':2},
'b': {'j':2,'k':3},
'd': {'j':1,'k':3}
}
So che posso usare d.get('c','NA')
per ottenere il sub-dict se esiste e ritorno 'NA' il contrario, ma ho davvero solo bisogno di un valore dal sub-dict. Mi piacerebbe fare qualcosa come d.get('c['j']','NA')
se esistesse.
In questo momento sto solo verificando se esiste la chiave di primo livello e quindi assegnando il valore secondario a una variabile se esiste o "NA" se non lo è. Tuttavia, lo faccio circa 500k volte e anche recuperando/generando altre informazioni su ogni chiave di livello superiore da un'altra parte, e sto cercando di accelerare un po 'questo.
un'occhiata a 'collections.defaultdict' per un'implementazione già prevista, vale a dire' defaultdict (lambda: defaultdict (lambda: 'NA')) ' – mtadd
Certo, ma è ancora necessario un' NADict' e una funzione che restituisce un'istanza condivisa di esso. Aggiungerò un esempio. –
@mtadd: l'idea era di non creare un nuovo dict/defaultdict su ogni mislookup. –