Saltar al contenido

Convierta todos los caracteres de una cadena en una clave de diccionario

Después de de nuestra extensa recopilación de información hemos podido resolver esta cuestión que tienen algunos de nuestros lectores. Te brindamos la solución y deseamos serte de mucha apoyo.

Solución:

Puedes usar dict.fromkeys() método –

>>> s = 'abcdefghijklmnopqrstuvwxyz'
>>> alphaDict = dict.fromkeys(s,0)
>>> alphaDict
'm': 0, 'p': 0, 'i': 0, 'n': 0, 'd': 0, 'w': 0, 'k': 0, 'y': 0, 's': 0, 'b': 0, 'h': 0, 't': 0, 'u': 0, 'q': 0, 'g': 0, 'l': 0, 'e': 0, 'a': 0, 'j': 0, 'c': 0, 'o': 0, 'f': 0, 'v': 0, 'x': 0, 'z': 0, 'r': 0

De la documentación –

fromkeys(secuencia[, value])

Crear un nuevo diccionario con keys de seq y valores establecidos en valor.

fromkeys() es un método de clase que devuelve un nuevo diccionario. el valor predeterminado es None.

Tenga en cuenta que no debe usar esto si value es algo mutable como list u otro dict etc. Como el valor solo se evalúa una vez cuando llama al método fromkeys() y todo keys señalar el mismo objeto.

Puede usar esto para tipos inmutables como valor como int, str etc.


Además, no es necesario especificar el s o alphabet stringpuedes usar en su lugar string.ascii_lowercase . Ejemplo –

>>> import string
>>> alphaDict = dict.fromkeys(string.ascii_lowercase,0)
>>> alphaDict
'm': 0, 'p': 0, 'i': 0, 'n': 0, 'd': 0, 'w': 0, 'k': 0, 'y': 0, 's': 0, 'b': 0, 'h': 0, 't': 0, 'u': 0, 'q': 0, 'g': 0, 'l': 0, 'e': 0, 'a': 0, 'j': 0, 'c': 0, 'o': 0, 'f': 0, 'v': 0, 'x': 0, 'z': 0, 'r': 0

Puede usar comprensiones de diccionario en Python.

alphabetDict = char: 0 for char in alphabet

Diccionarios (Python Docs)

Hay una pequeña diferencia entre esta respuesta y la anterior de Anand. Las comprensiones dictadas evalúan el valor de cada keymientras fromkeys solo lo hace una vez. Si está usando cosas como ints, esto no plantea ningún problema. Sin embargo, si lo haces

d = key: [] for key in 
d[3].append(5)
print(d[2])

te dio

[]

y tienes listas distintas, mientras

d = dict.fromkeys(, [])
d[3].append(5)
print(d[2])

te dio

[5]

mapeará todos los keys a la misma lista.

Sí, puede hacerlo en una línea usando comprensiones de diccionario.

In [1]: alphabet = 'abcdefghijklmnopqrstuvwxyz'

In [2]: x:0 for x in alphabet # dictionary comprehension
Out[2]: 
'a': 0,
 'b': 0,
 'c': 0,
 'd': 0,
 'e': 0,
 'f': 0,
 'g': 0,
 'h': 0,
 'i': 0,
 'j': 0,
 'k': 0,
 'l': 0,
 'm': 0,
 'n': 0,
 'o': 0,
 'p': 0,
 'q': 0,
 'r': 0,
 's': 0,
 't': 0,
 'u': 0,
 'v': 0,
 'w': 0,
 'x': 0,
 'y': 0,
 'z': 0

Te mostramos comentarios y puntuaciones

No se te olvide mostrar esta sección si te valió la pena.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *