Ero in una conversazione con qualcuno che codifica per me. Era frustrato dal mio approccio a un particolare problema. Sono completamente autodidatta e molto pragmatico - non sono uno sviluppatore professionista, ma a volte scrivo codice per fare qualcosa e poi glielo passo per ripulirlo - renderlo solido ecc.
Stiamo leggendo in file txt di grandi dimensioni che utilizzano i tag sgml per contrassegnare i confini tra i singoli documenti correlati tra loro.
<opentagfor txt file>
<document>
<maybe some attribute tags of the document>
the
document
could be a uuencoded
could be html
or something else
can tell what type by the attribute tags
</document>
<anotherdocument>
<maybe some attribute tags of the another document>
the
document itself
could be a uuencoded
could be html
or something else
can tell what type by the attribute tags
</anotherdocument>
.
.
.
<closetagfor txt file>
I singoli documenti vengono consumati a valle. A volte vengono scritti su una struttura di file per l'indicizzazione, altre volte alcuni dei loro contenuti vengono estratti e salvati come "dati".
Quindi il mio approccio era di creare un dizionario di dizionari.
document_dictionary = {document_position_index:{attribute-tag-1:value1,attribute-tag-2:value2,document:the\n document itself\n could be a uuencoded\n could be html\n or something else \n can tell what type by the attribute tags}, . . .}
document_position_index è la posizione dell'indice del documento nel file sorgente txt originale - non ha alcun significato rilevante.
ora se voglio fare qualcosa con i documenti posso fare cose come
for document in document_dictionary
if document['some-attribute-tag'] == someValue:
do something
Il problema è che questa cattiva codifica (in particolare l'utilizzo di un intero (document_position_index)) era frustrante per il mio sviluppatore. Ha detto che è una cattiva forma. Ancora dopo aver cercato su Google per un po 'non capisco. Quindi apprezzerei sia una spiegazione migliore che poi ho preso da lui o qualche puntatore nella giusta direzione.
È questo il tipo di domanda che dovrebbe essere posta qui?