Ho problemi a ottenere i miei dati nel formato che mi piacerebbe in python.nidificazione con namedtuple
Fondamentalmente ho un programma che legge in dati binari e fornisce funzioni per la stampa e l'analisi dei dati su detto.
i miei dati sono titoli principali e poi sottotitoli che potrebbero essere qualsiasi numero di tipi di dati diverse.
mi piacerebbe essere in grado di accedere ai miei dati, come ad esempio:
>>> a = myDatafile.readit()
>>> a.elements.hydrogen.distributionfunction
(a big array)
>>> a.elements.hydrogen.mass
1
>>> a.elements.carbon.mass
12
ma io non conosco i nomi degli atomi fino a runtime.
Ho provato con namedtuple, ad esempio dopo ho letto in tutti i nomi atomo:
self.elements = namedtuple('elements',elementlist)
Dove elementlist è una lista di stringhe, per esempio ('idrogeno', 'carbon'). Ma il problema è che non posso nido questi usando per esempio:
for i in range(0,self.nelements):
self.elements[i] = namedtuple('details',['ux','uy','uz','mass','distributionfunction'])
e quindi in grado di accedere ai valori tramite ad esempio
self.elements.electron.distributionfunction.
Forse sto facendo questo completamente sbagliato. Sono abbastanza inesperto con Python. So che sarebbe facile farlo se non mi fossi preoccupato di nominare le variabili dinamicamente.
spero di stato chiaro con quello che sto cercando di realizzare!
Puoi per favore ci mostrano i dati di esempio? – Abhijit
@abhijit È piuttosto complicato e viene letto come dati binari. Il numero di elementi chimici è variabile da un file all'altro ma ogni elemento ha: 'un nome (stringa) massa (doppia precisione) carica (doppia precisione) griglia velocità 3d (3 * n * doppia precisione) griglia di sfasamento (n^6 * doppia precisione) ' Ho una classe che legge il file binario e lo legge in variabili, ma ho problemi a creare la struttura dati a cui è possibile accedere nel modo in cui ho descritto. –