On 2012-09-17 16:00, Antonio Piepoli wrote:
Sì avevo già intenzione di usare le funzioni come oggetto come mi hai
detto
tu. Quello che non riesco a fare è fare la stessa cosa per i
dizionari;
cioè match[0] è "match_surname" (una stringa), voglio che lo script
prenda
il dizionario che ha lo stesso nome della stringa... che scelga la
funzione
e che la applichi... per poi passare al passo successivo di match ->
match[1] etc ... spero di essermi spiegato meglio.
Sì. Ma perchè non metti il (riferimento al) dizionario nella lista e
peschi direttamente quello?
match_surname = {}
match_name = {}
match = [match_surname, match_name]
quello che vuoi fare tu, prendere un oggetto globale tramite il nome,
si fa facile: globals()['match_name'], per cui tu dovresti fare
globals()[match[1]]. Ma è strano ti serva: di sicuro fare una lista o
usare altre strutture con i riferimenti espliciti ai dizionari è una
soluzione migliore che andarseli a cercare per nome.
ho corretto l'errore in choose:
def choose(d):
index = 0
keys = d.keys()
r = random.random()
while (r > 0):
r -= d[keys[index]]
index += 1
return keys[index-1]
Sempre brutta come una caduta per le scale resta :) Per esempio, poiché
metti la cosa che scegli nelle chiavi di un dizionario, allora deve
essere hashabile, per cui non puoi scegliere casualmente da un insieme
di liste o di dizionari. Per non parlare della sua efficienza. Comunque
sei libero di usare questa se ti soddisfa in correttezza, prestazioni e
possiblità di input.
--
Daniele Varrazzo - Develer S.r.l.
http://www.develer.com
_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python