La función fromkeys() del diccionario de Python devuelve el diccionario con la clave asignada y el valor específico. Crea un nuevo diccionario a partir de la secuencia dada con el valor específico.
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.
Ejemplo del método fromkeys() del diccionario de Python
Ejemplo 1: Demostración del funcionamiento de fromkeys()
Python3
# Python 3 code to demonstrate # working of fromkeys() # initializing sequence seq = {'a', 'b', 'c', 'd', 'e'} # using fromkeys() to convert sequence to dict # initializing with None res_dict = dict.fromkeys(seq) # Printing created dict print("The newly created dict with None values : " + str(res_dict)) # using fromkeys() to convert sequence to dict # initializing with 1 res_dict2 = dict.fromkeys(seq, 1) # Printing created dict print("The newly created dict with 1 as value : " + str(res_dict2))
Producción :
El dictado recién creado con valores Ninguno: {‘d’: Ninguno, ‘a’: Ninguno, ‘b’: Ninguno, ‘c’: Ninguno, ‘e’: Ninguno}
El dictado recién creado con 1 como valor: {‘ d’: 1, ‘a’: 1, ‘b’: 1, ‘c’: 1, ‘e’: 1}
Comportamiento de fromdict() con objetos mutables como valores
fromdict() también se puede proporcionar con el objeto mutable como valor predeterminado. Pero en este caso, se hace una copia en profundidad del diccionario, es decir, si agregamos valor en la lista original, la adición se realiza en todos los valores de las claves.
Prevención: Ciertas técnicas de comprensión de diccionario se pueden utilizar para crear una nueva lista como valores clave, que no apunten a la lista original como valores de claves.
Ejemplo 2: demostración del comportamiento con objetos mutables
Python3
# Python 3 code to demonstrate # behaviour with mutable objects # initializing sequence and list seq = {'a', 'b', 'c', 'd', 'e'} lis1 = [2, 3] # using fromkeys() to convert sequence to dict # using conventional method res_dict = dict.fromkeys(seq, lis1) # Printing created dict print("The newly created dict with list values : " + str(res_dict)) # appending to lis1 lis1.append(4) # Printing dict after appending # Notice that append takes place in all values print("The dict with list values after appending : " + str(res_dict)) lis1 = [2, 3] print('\n') # using fromkeys() to convert sequence to dict # using dict. comprehension res_dict2 = {key: list(lis1) for key in seq} # Printing created dict print("The newly created dict with list values : " + str(res_dict2)) # appending to lis1 lis1.append(4) # Printing dict after appending # Notice that append doesnt take place now. print("The dict with list values after appending (no change) : " + str(res_dict2))
Producción:
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]}
Ejemplo 3: Diccionario de Python fromkeys() valor predeterminado
Python3
x = ('key1', 'key2', 'key3') y = 0 d = dict.fromkeys(x, y) print(d)
Producción:
{'key1': 0, 'key2': 0, 'key3': 0}
Ejemplo 4: Python Dictionary fromkeys() con una lista vacía
Python3
# Python3 code to demonstrate # to initialize dictionary with list # using fromkeys() # using fromkeys() to construct new_dict = dict.fromkeys(range(4), []) # printing result print ("New dictionary with empty lists as keys : " + str(new_dict))
Producción:
New dictionary with empty lists as keys : {0: [], 1: [], 2: [], 3: []}
Publicación traducida automáticamente
Artículo escrito por manjeet_04 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA