Python: ¿crear diccionario usando dict () con claves enteras?

2 minutos de lectura

Avatar de usuario de Sindyr
Sindyr

En Python, veo gente creando diccionarios como este:

d = dict( one = 1, two = 2, three = 3 )

¿Qué sucede si mis claves son números enteros? Cuando intento esto:

d = dict (1 = 1, 2 = 2, 3 = 3 )

me sale un error Por supuesto que podría hacer esto:

d = { 1:1, 2:2, 3:3 }

que funciona bien, pero mi pregunta principal es esta: ¿hay alguna manera de configurar entero teclas usando la función/constructor dict()?

Avatar de usuario de BrenBarn
BrenBarn

Sí, pero no con esa versión del constructor. Puedes hacerlo:

>>> dict([(1, 2), (3, 4)])
{1: 2, 3: 4}

Hay varias maneras diferentes de hacer un dictado. Como documentado“proporcionar argumentos de palabras clave […] solo funciona para claves que son identificadores de Python válidos”.

  • Eso es lo que me temía. Hay una manera fácil y visualmente atractiva de hacer un diccionario d = dict(one=1, two=2) pero si sus claves NO son identificadores de Python válidos, se ve obligado a usar una sintaxis de aspecto mucho menos simple. 🙁

    – Sindyr

    13/09/2015 a las 19:49

  • @Sindyr: Hay una manera fácil y atractiva. Es {1:2, 3:4}.

    – BrenBarn

    13/09/2015 a las 19:50


  • Sí, tenía eso en mi ejemplo principal, acabo de encontrar la sintaxis igual de 1 = 1 más aún.

    – Sindyr

    13/09/2015 a las 20:54

  • @Sindyr, no encuentro una asignación del formulario 1 = 2 significativo o atractivo.

    – Alexei

    23 de febrero de 2018 a las 14:29


  • @ Yamo93: Seguro que lo hay. solo puedes hacer my_dict[1] = "whatever".

    – BrenBarn

    16 de diciembre de 2021 a las 7:25

También existen estas ‘maneras’:

>>> dict.fromkeys(range(1, 4))
{1: None, 2: None, 3: None}
>>> dict(zip(range(1, 4), range(1, 4)))
{1: 1, 2: 2, 3: 3}

  • Hola, no conocía el método de clase fromkeys. ¡Eso es útil! De hecho, justo hoy estaba trabajando en una fusión de varias fuentes y estoy iterando sobre el conjunto de claves de varias fuentes, porque todas pueden tener elementos distintos, pero las claves son dictados y objetos que se resuelven en instancias de un clase específica. Gracias, @aivar-paalberg!

    – Sam Hughes

    17 de diciembre de 2021 a las 5:16

Avatar de usuario de Malavan Satkunarajah
Malavan Satkunarajah

a = dict(one=1, two=2, three=3)

Proporcionar argumentos de palabras clave como en este ejemplo solo funciona para claves que son identificadores de Python válidos. De lo contrario, se puede utilizar cualquier clave válida.

¿Ha sido útil esta solución?