Sto cercando di mantenere un dizionario di file aperti per dividere i dati in singoli file. Quando richiedo un file dal dizionario mi piacerebbe che fosse aperto se la chiave non è presente. Tuttavia, non sembra che io possa usare un lambda come predefinito.è possibile utilizzare un lambda come dizionario predefinito?
ad es.
files = {}
for row in data:
f = files.get(row.field1, lambda: open(row.field1, 'w'))
f.write('stuff...')
Questo non funziona perché f è impostato sulla funzione, piuttosto che sul risultato. setdefault utilizzando la sintassi sopra non funziona neanche. C'è qualcosa che posso fare oltre a questo:
f = files.get(row.field1)
if not f:
f = files[row.field1] = open(row.field1, 'w')
get() non solleva un errore chiave se l'oggetto non viene trovato. [] la notazione lo fa. per esempio. file [tasto] – Jacob