In primo luogo, sono nuovo di Python, quindi mi scuso se ho trascurato qualcosa, ma mi piacerebbe usare dict.fromkeys
(o qualcosa di simile) per creare un dizionario di liste, le cui chiavi sono fornite in un altro elenco. Sto eseguendo alcuni test di temporizzazione e mi piacerebbe per la chiave per essere la variabile di ingresso e la lista per contenere i tempi per le corse:Come posso creare un valore univoco per ogni chiave usando dict.fromkeys?
def benchmark(input):
...
return time_taken
runs = 10
inputs = (1, 2, 3, 5, 8, 13, 21, 34, 55)
results = dict.fromkeys(inputs, [])
for run in range(0, runs):
for i in inputs:
results[i].append(benchmark(i))
Il problema che sto avendo è che tutte le chiavi sembra che il dizionario condivida la stessa lista, e ogni esecuzione viene semplicemente accodata ad essa. C'è un modo per generare una lista vuota unica per ogni chiave usando fromkeys
? In caso contrario, c'è un altro modo per farlo senza generare il dizionario risultante a mano?
Fantastico, funziona benissimo! Grazie! (anche se mi piacerebbe che fosse possibile generare le liste vuote prima che dovessi usarle) –
Non è possibile. Una volta che chiami [] o list() viene creato un oggetto e vincolato a una variabile. Controlla ad esempio questo x = [[]] * 10; x [0] .Append ('test'); print x – vartec
Ok, ci sono alternative con tutte le liste istanziate. – vartec