2010-03-03 2 views
10

cosa è il modo migliore per convertire int di lunghi, di doppie, di in stringhe e viceversa in python.Python Tipo conversione

Sto scorrendo l'elenco e passando anela ad un dict che dovrebbe essere trasformato in una stringa unicode.

Io

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

Perché sono alcune delle cose più ovvie così complicato?

+1

"passando anela ad un dict che dovrebbe essere trasformata in una stringa unicode"? Come è "ovvio"? Cosa * stai * stai cercando di realizzare? –

+0

in Java, è possibile chiamare il metodo toString(), che si potrebbe pensare è ovviamente disponibile in Python. Ed esiste in Python tramite il metodo str(). Non solo sull'oggetto stesso. – Dave

+1

"non sull'oggetto stesso". 'str (anything)' funziona per ogni tipo che c'è - per definizione. Per le proprie classi, 'def __str __ (self)' per personalizzare ciò che viene restituito (è come Java di 'toString') Che problema reale si è verificato? Puoi fornire codice e output di esempio? –

risposta

2

Si potrebbe fare così in 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 in Python 3.x:

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

Nota che le stringhe in Python 3 sono le stesse stringhe Unicode in Python 2.

+0

Il modo in cui l'OP utilizza n [0] non sembra che sia una chiave –

+0

@gnibbler: Beh, è ​​così che ho capito il suo pseudocodice. – AndiDog

+0

Hai capito bene, questa è una risposta corretta Grazie! – Dave

37

Per convertire da un tipo numerico in una stringa:

str(100) 

Per convertire da una stringa in un int:

int("100") 

Per convertire da una stringa a float:

float("100") 
+0

Grazie, l'ho trovato nei documenti. Ma apprezzo molto la tua risposta. – Dave

+0

La tua risposta è corretta anche – Dave

+0

Questa è una risposta molto migliore. Non so perché non è la risposta accettata. –

0

Si può fare in questo modo

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

Forse questo è più chiaro se ci sono solo 2 o 3 chiavi/valori

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

Credo che questo sarebbe meglio se ci sono più di 3 chiavi/valori

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