Ciao Marco, Il 20/04/2015 14:19, Marco De Paoli ha scritto:
dopo il talk di Alex su codice pythonico/idiomatico... beh, non posso lasciar passare il seguente caso senza chiedervi un opinione
[snip]
ok, show me the code! import openpyxl as pyx from .models import MyModel CN = XLSX_COLUMN_NAMES wb = pyx.load_workbook("sample.xlsx")) ws = wb['DB'] columns = {c.column: CN.get(c.value) for c in ws.rows[0]} MyModel.objects.all().delete() for row in ws.rows[1:]: kwargs = {columns[c.column]: c.value for c in row} kwargs.pop(None) MyModel(**kwargs).save()
[snip]
E' quel kwargs.pop(None) che non mi piace Ci ho girato un po' intorno, ma non mi viene in mente come rimuoverlo a meno di introdurre degli "if" che mi piacciono ancora meno
Potevi mettere un commento sul perchè lo stai chiamando quel pop, tra un mese quello è un WTF assicurato. A quanto capisco io è perchè per qualche motivo ti ritrovi columns[c.column] a None. Questo lo fai probabilmente per prevenire di esplodere quando hai righe malformate con testo su colonne che non hanno intestazione. Se è questo non troverei vergogna a mettere un *esplicito* if c.column in columns nella dict comprehension di kwargs. Ma forse io non sono di gusti così raffinati :)
P.P.S. boh, mi sa che vi ho dato un po' troppo contesto rispetto al problema vero e proprio. Ma diciamo che è stata anche l'occasione per citare qualche tecnologia che mi ha fatto comodo: openpyxl e ... Django!
hai fatto bene -- Riccardo Magliocchetti @rmistaken http://menodizero.it _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python