elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Generador de diccionario en Python
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Generador de diccionario en Python  (Leído 3,742 veces)
PUAROT

Desconectado Desconectado

Mensajes: 86



Ver Perfil WWW
Generador de diccionario en Python
« en: 2 Abril 2017, 00:09 am »

he visto que se pueden crear diccionarios con expresiones generadoras, y me he puesto a practicar :-P
El caso es que me he propuesto crear un diccionario con los valores del 1 al 100 donde la clave sea un numero impar y el valor el par.
Código:
{1:2,3:4....}

he intentado crear una expresion generadora por si sola y no he sido capaz, lo mas cerca que he estado es :
Código
  1. c = {x:y for x in range(30) if x % 2 != 0 for y in range(30) if y % 2 == 0}

pero el resultado no es el esperado por mi
por lo que he pensado en hacer un generador para los numeros pares y otro para los impares :
Código
  1. a = (i for i in range(100) if i % 2 == 0)
  2.  
  3. b = (i for i in range(100) if i % 2 != 0)
y después crear el diccionario con un bucle for :
Código
  1. for i in a:
  2. for j in b:
  3. c[i] = j

pero el resultado tampoco es el esperado por mi y me doy cuenta de que no es la logica correcta, así que intento :
Código
  1. for x in a, y in b:
  2. c[x] = y
Estoy seguro de que es mucho mas facil de lo que yo estoy intentando, pero no encuentro la forma adecuada.
En que estoy fallando ?


En línea

PUAROT

Desconectado Desconectado

Mensajes: 86



Ver Perfil WWW
Re: Generador de diccionario en Python
« Respuesta #1 en: 4 Abril 2017, 20:39 pm »

He encontrado la forma de hacerlo, creo que es un poco chapucera, ya que estoy seguro que hay una forma mejor de hacerlo, pero...

Código
  1. a = (i for i in range(100) if i % 2 == 0)
  2. b = (i for i in range(100) if i % 2 != 0)
  3. c = {}
  4. for x in a:
  5.    c[x]=next(b)


En línea

tincopasan


Desconectado Desconectado

Mensajes: 1.286

No es lo mismo conocer el camino que recorrerlo.


Ver Perfil
Re: Generador de diccionario en Python
« Respuesta #2 en: 5 Abril 2017, 04:57 am »

la verdad no se bien cual es el planteo general, pero una forma de obtener ese resultado en una línea:
Código
  1. c = {x:x+1 for x in range(100) if x %2 != 0 }
« Última modificación: 5 Abril 2017, 05:02 am por tincopasan » En línea

PUAROT

Desconectado Desconectado

Mensajes: 86



Ver Perfil WWW
Re: Generador de diccionario en Python
« Respuesta #3 en: 5 Abril 2017, 20:23 pm »

Gracias por contestar, no había caído en hacerlo así.

El planteamiento es poder crear un diccionario con una condición para el key y otra para el value por ejemplo en el key los pares y el otro los múltiplos de tres

En línea

tincopasan


Desconectado Desconectado

Mensajes: 1.286

No es lo mismo conocer el camino que recorrerlo.


Ver Perfil
Re: Generador de diccionario en Python
« Respuesta #4 en: 6 Abril 2017, 19:11 pm »

Citar
Publicado por: PUAROT
He encontrado la forma de hacerlo, creo que es un poco chapucera, ya que estoy seguro que hay una forma mejor de hacerlo, pero...

Código

    a = (i for i in range(100) if i % 2 == 0)
    b = (i for i in range(100) if i % 2 != 0)
    c = {}
    for x in a:
        c
  • =next(b)
una de las cosas que me gusta de python es que te permite resolver un planteo de muchas formas, te muestro otra con respecto a tu código:
Código
  1. a = (i for i in range(100) if i % 2 == 0)
  2. b = (i for i in range(100) if i % 2 != 0)
  3. c = {a:b for a,b in zip(a,b)}
  4.  
 
En línea

PUAROT

Desconectado Desconectado

Mensajes: 86



Ver Perfil WWW
Re: Generador de diccionario en Python
« Respuesta #5 en: 6 Abril 2017, 21:45 pm »

 ;-) ;-) ;-) ;-)

El zip es lo que me faltaba...

voy a buscar que usos tiene y como se usa, que no lo he usado nunca y no lo controlo

Muchas gracias !!!
En línea

Once

Desconectado Desconectado

Mensajes: 120


Ver Perfil WWW
Re: Generador de diccionario en Python
« Respuesta #6 en: 8 Abril 2017, 21:04 pm »

Hola chicos, sé que ya está resuelta la duda, pero hay una forma más fácil de hacer, teniendo en cuenta que los números pares están dados por la expresion: 2n y los impares por 2n+1:

Código
  1. {2*x: 2*x+1 for x in range(100)}

Saludos!
En línea

PUAROT

Desconectado Desconectado

Mensajes: 86



Ver Perfil WWW
Re: Generador de diccionario en Python
« Respuesta #7 en: 9 Abril 2017, 00:49 am »

Muchas gracias !!!
Como bien se dice por aquí, no hay una sola forma de hacer las cosas :-)

Me ha gustado la forma de plantear el problema!!
Sabia yo que era mucho mas facil de lo que parecia :P
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Batch] Generador de Diccionario
Scripting
SmartGenius 8 6,672 Último mensaje 16 Diciembre 2008, 19:46 pm
por SmartGenius
Generador de diccionario
Hacking Wireless
magp_90 6 5,982 Último mensaje 7 Septiembre 2012, 03:24 am
por El_Andaluz
Generador diccionario numérico
Programación C/C++
hossman92 1 3,926 Último mensaje 24 Noviembre 2014, 19:12 pm
por engel lex
Generador de diccionario FTEXXXX
Hacking Wireless
Iluminadora 0 2,279 Último mensaje 19 Enero 2015, 13:12 pm
por Iluminadora
[Python]Generador de diccionario Jazztel_XX
Scripting
Iluminadora 0 1,856 Último mensaje 22 Enero 2015, 05:29 am
por Iluminadora
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines