Diccionario de Python fromkeys ()

El método fromkeys () crea un nuevo diccionario a partir de la secuencia de elementos dada con un valor proporcionado por el usuario.

La sintaxis del fromkeys()método es:

 dictionary.fromkeys (secuencia (, valor))

fromkeys () Parámetros

fromkeys() El método toma dos parámetros:

  • Secuencia : secuencia de elementos que se utilizarán como claves para el nuevo diccionario.
  • valor (Opcional) - valor que se establece para cada elemento del diccionario

Valor de retorno de fromkeys ()

fromkeys() El método devuelve un nuevo diccionario con la secuencia de elementos dada como claves del diccionario.

Si se establece el argumento de valor, cada elemento del diccionario recién creado se establece en el valor proporcionado.

Ejemplo 1: crear un diccionario a partir de una secuencia de teclas

 # vowels keys keys = ('a', 'e', 'i', 'o', 'u' ) vowels = dict.fromkeys(keys) print(vowels)

Salida

 ('a': Ninguno, 'u': Ninguno, 'o': Ninguno, 'e': Ninguno, 'i': Ninguno) 

Ejemplo 2: crear un diccionario a partir de una secuencia de claves con valor

 # vowels keys keys = ('a', 'e', 'i', 'o', 'u' ) value = 'vowel' vowels = dict.fromkeys(keys, value) print(vowels)

Salida

 ('a': 'vocal', 'u': 'vocal', 'o': 'vocal', 'e': 'vocal', 'i': 'vocal') 

Ejemplo 3: crear un diccionario a partir de una lista de objetos mutables

 # vowels keys keys = ('a', 'e', 'i', 'o', 'u' ) value = (1) vowels = dict.fromkeys(keys, value) print(vowels) # updating the value value.append(2) print(vowels)

Salida

 ('a': (1), 'u': (1), 'o': (1), 'e': (1), 'i': (1)) ('a': (1, 2 ), 'u': (1, 2), 'o': (1, 2), 'e': (1, 2), 'i': (1, 2)) 

Si el valor es un objeto mutable (cuyo valor se puede modificar) como una lista, diccionario, etc., cuando se modifica el objeto mutable, también se actualiza cada elemento de la secuencia.

Esto se debe a que a cada elemento se le asigna una referencia al mismo objeto (apunta al mismo objeto en la memoria).

Para evitar este problema, utilizamos la comprensión del diccionario.

 # vowels keys keys = ('a', 'e', 'i', 'o', 'u' ) value = (1) vowels = ( key : list(value) for key in keys ) # you can also use ( key : value(:) for key in keys ) print(vowels) # updating the value value.append(2) print(vowels)

Salida

 ('a': (1), 'u': (1), 'o': (1), 'e': (1), 'i': (1)) ('a': (1), 'u': (1), 'o': (1), 'e': (1), 'i': (1)) 

Aquí, para cada clave en claves, se crea y se le asigna una nueva lista de valor.

En esencia, el valor no se asigna al elemento, sino que se crea una nueva lista a partir de él, que luego se asigna a cada elemento en el diccionario.

Articulos interesantes...