[Python-es] De listas a variables

Jhonatan Sneider Salguero Villa sney2002 en gmail.com
Vie Ago 30 15:32:09 CEST 2013


Hola, intenta con una lista de tuplas

[("x", 1), ("y", 2)]

y en el loop las desempaquetas

for nombre, valor in list:
    ....

Saludos.
El 30/08/2013 08:13, "Luis" <esteban en princesa.pri.sld.cu> escribió:

> Hola,  :)
>
> Necesito pasar un conjunto de pares 'clave:valor' a una función. He estado
> probado con los diccionarios pero resulta que a la hora de trabajar con los
> pares no me conviene el orden en que salen, ni tampoco ordenarlos, más bien
> me interesa el orden en que los introduje, y no salen así.
>
> He pensado entonces en pasar una lista con solo los nombres de las
> variables pero necesitaría poder convertir esos elementos de la lista en
> variables independientes.
>
> Me explico con un ejemplo,
>
>  x=1
>>>> y=2
>>>> z=3
>>>> list=[x,y,z]
>>>> def mostrar(list):
>>>>
>>> ...    for var in list:
> ...       print '%s: %2d'%(var,var)
> ...
>
>> mostrar(list)
>>>>
>>> 1:  1
> 2:  2
> 3:  3
>
> Aquí está la cosa, necesito que en la primera columna aparezcan x,y,z y no
> sus respectivos valores.
>
> Con los diccionarios he probado de varias maneras:
>
> 1. Pasando el diccionario y luego volviendo a escribir las mismas
> variables dentro de la función para así poder establecer mi orden. Este
> método no tiene gracia.
>
> 2. Pasando el diccionario y una lista con las mismas variables para poder
> imponer el orden pues las listas no alteran dicho orden. Este método
> tampoco tiene gracia.
>
> 3. Pasando una lista con todas las variables entrecomilladas y también sin
> comillas(como variables). Igualmente de absurdo. Debería de poder lograrlo
> pasando los nombres de variables una sola vez.
>
> Si pudiera trabajar la línea de la función 'print' tal vez pudiera
> lograrlo, pero cómo?
>
> Les estaré muy agradecido  :)
>
> --
> Saludos,
>
> Luis Esteban de Dios Núñez
>
> ------------------------------**-----
> CONSULTE la Revista de Ciencias Medicas
> de Pinar del Rio en Internet
> www.revcmpinar.sld.cu
>
> --
>
> Este mensaje le ha llegado mediante el servicio de correo electronico que
> ofrece Infomed para respaldar el cumplimiento de las misiones del Sistema
> Nacional de Salud. La persona que envia este correo asume el compromiso de
> usar el servicio a tales fines y cumplir con las regulaciones establecidas
>
> Infomed: http://www.sld.cu/
>
> ______________________________**_________________
> Python-es mailing list
> Python-es en python.org
> http://mail.python.org/**mailman/listinfo/python-es<http://mail.python.org/mailman/listinfo/python-es>
> FAQ: http://python-es-faq.wikidot.**com/<http://python-es-faq.wikidot.com/>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20130830/b8153db7/attachment.html>


Más información sobre la lista de distribución Python-es