A veces se hace necesario formar un diccionario a partir de las claves dadas. Aproximadamente, hacer esto llevaría tiempo y sería un trabajo más tedioso. Por lo tanto, fromkeys () nos ayuda a resolver fácilmente este problema usando solo un método. Este artículo explica los aspectos operativos y otros asociados con esta función.
Sintaxis: fromkeys (seq, val)
Parámetros:
seq: La secuencia que se va a transformar en un diccionario.
val: Valores iniciales que deben asignarse a las claves generadas... El valor predeterminado es Ninguno.Devuelve: Un diccionario con claves asignadas a Ninguno si no se proporciona ningún valor, de lo contrario al valor proporcionado en el campo.
Código # 1: Demostración de fromkeys ()
< clase de código = "simple"> seq
< clase de código = "simple"> res_dict 2 |
Salir:
El dictado recién creado con valores Ninguno: {’d’: Ninguno, ’a’: Ninguno, ’b’: Ninguno, ’c’: Ninguno, ’e’: Ninguno }
< /blockquote>
El dictado recién creado con 1 como valor: {’ d ’: 1,’ a ’: 1,’ b ’: 1,’ c ’: 1,’ e ’: 1}El comportamiento de fromdict () con objetos mutables como valores:
La función fromdict () también se puede suministrar con un objeto multilatable como valores predeterminados. Pero en este caso se crea una copia en profundidad del diccionario, es decir, si añadimos un valor a la lista original, la suma se produce en todos los valores clave.
Prevención: Ciertas técnicas de comprensión de diccionario pueden usarse para crear una nueva lista como valores clave que no apunte a la lista original como valores clave.
Código # 2: Demostrar comportamiento con objetos mutables.
< td class = "code">
# Código de demostración de Python 3
# comportamiento con objetos mutables
p>
# inicialización de secuencia y lista
seq
=
{ ’a’ , ’ b’ , ’c’ , ’d’ , ’ e’ }
lis1 = [ 2 , 3 ]
# usando fromkeys () para convertir secuencia a dict
# usando el método normal
res_dict
=
dict . fromkeys (seq, lis1)
# Imprimir dictado creado
(
"El dictado recién creado con valores de lista:"
+ str (res_dict)) < br />
# agregar a lis1
lis1.append ( 4 )
# Imprimir dictado después de agregar
# Tenga en cuenta que la adición ocurre en todos los valores
(
" El dict con valores de lista después de agregar: "
< clase de código = "palabra clave"> +
str (res_dict) )
lis1 < clase de código ="palabra clave"> = [ 2 , 3 ]
imprimir ( ’’ )
# usando fromkeys () para convertir la secuencia a dict
# usando dict. comprensión
res_dict2
=
{clave: < /código>
lista (lis1) para clave en seq}
# Imprimir dictado creado
(
" El dictado recién creado con valores de lista: "
< clase de código = "palabra clave"> +
str (res_dict2))
# agregar a lis1
lis1.append ( 4 )
# Imprimir dictado después de agregar
# Tenga en cuenta que la adición no está ocurriendo ahora.
imprimir
(
" El dictado con lista valores después de agregar (sin cambios): "
+
str
(res_dict2))
Salida:
El dictado recién creado con valores de lista: {’d’: [2, 3], ’e’: [2, 3], ’c’: [2, 3], ’a’: [2, 3], ’b’: [2, 3]}
El dict con valores de lista después de agregar: {’d’: [2, 3, 4], ’e’: [2, 3, 4], ’c’: [2, 3, 4], ’a’: [2, 3, 4], ’b’: [2, 3, 4] }El dictado recién creado con valores de lista: {’d’: [2, 3], ’e’: [2, 3], ’c’: [2, 3], ’a’ : [2, 3], ’b’: [2, 3]}
El dict con valores de lista después de agregar (sin cambios): {’d’: [2, 3], ’e’: [2, 3], ’c’: [2, 3], ’a’: [2, 3], ’b’: [2, 3]}