2010-03-03 13 views
10

¿Cuál es la mejor manera de convertir int's, long's, double's a cadenas y viceversa en python.Python Type Conversion

Estoy recorriendo una lista y pasando longs a un dict que debe convertirse en una cadena Unicode.

Yo

for n in l: 
    {'my_key':n[0],'my_other_key':n[1]} 

¿Por qué algunas de las cosas más obvias tan complicado?

+1

"pasar anhela un diccionario que se debe convertir en una cadena Unicode"? ¿Cómo es eso "obvio"? ¿Qué está tratando de lograr? –

+0

En JAVA, puede llamar al método toString() que, en su opinión, está obviamente disponible en Python. Y existe en Python a través del método str(). Simplemente no en el Objeto mismo. – Dave

+1

"no en el Objeto mismo". 'str (anything)' funciona para todos los tipos que hay, por definición. Para sus propias clases, 'def __str __ (self)' para adaptar lo que se devuelve (es como 'toString' de Java) ¿Qué problema real está teniendo? ¿Puede proporcionar código y muestra de salida? –

Respuesta

2

Puede hacerlo así en Python 2.x:

>>> l = ((1,2),(3,4)) 
>>> dict(map(lambda n: (n[0], unicode(n[1])), l)) 
{1: u'2', 3: u'4'} 

o en Python 3.x:

>>> l = ((1,2),(3,4)) 
>>> {n[0] : str(n[1]) for n in l} 
{1: '2', 3: '4'} 

Tenga en cuenta que las cadenas en Python 3 son las mismas que las cadenas Unicode en Python 2.

+0

La forma en que OP usa n [0] no parece ser una clave –

+0

@gnibbler: Bueno, así entendí su pseudocódigo. – AndiDog

+0

Has entendido bien, esta es una respuesta correcta ¡Gracias! – Dave

37

Para convertir de un tipo numérico a una cadena:

str(100) 

convertir de una cadena a un int:

int("100") 

convertir de una cadena a un flotador:

float("100") 
+0

Gracias, lo encontré en los documentos. Pero aprecio mucho tu respuesta. – Dave

+0

Su respuesta también es correcta – Dave

+0

Esta es una respuesta mucho mejor. No sé por qué no es la respuesta aceptada. –

0

Puede hacerlo de esta manera

for n in l: 
    {'my_key':unicode(n[0]),'my_other_key':unicode(n[1])} 

Quizás esto sea más claro si solo hay 2 o 3 claves/valores

for my_value, my_other_value in l: 
    {'my_key':unicode(my_value),'my_other_key':unicode(my_other_value)} 

Creo que esto sería mejor si hay más de 3 llaves/valores

for n in l: 
    dict(zip(('my_key','myother_key'),map(unicode,n))) 
Cuestiones relacionadas