Mi intento de crear un diccionario de listas mediante programación no me permite abordar las claves del diccionario de forma individual. Cada vez que creo el diccionario de listas y trato de anexar a una clave, todas se actualizan. He aquí un caso de prueba muy simple:¿Cómo inicializo un diccionario de listas vacías en Python?
data = {}
data = data.fromkeys(range(2),[])
data[1].append('hello')
print data
Resultado real: {0: ['hello'], 1: ['hello']}
Resultado esperado: {0: [], 1: ['hello']}
aquí es lo que funciona
data = {0:[],1:[]}
data[1].append('hello')
print data
real y el resultado previsto: {0: [], 1: ['hello']}
Por qué ¿el método fromkeys
no funciona como se esperaba?
Bueno, este es un comportamiento poco intuitivo, ¿alguna idea sobre por qué se usa el mismo objeto para todas las teclas? – Bar
@Bar Porque no hay nada más que la función pueda hacer dentro de la semántica del lenguaje Python. Usted transfiere un solo objeto para usarlo como valor para todas las claves, de modo que ese único objeto se use para todas las claves.Sería mejor para el método 'fromkeys()' aceptar una función de fábrica en su lugar, así podríamos pasar 'list' como una función, y ese funciton sería llamado una vez por cada clave creada, pero esa no es la API real de 'dict.fromkeys()'. –