10

Whats the best way to convert int's, long's, double's to strings and vice versa in python.

I am looping through a list and passing longs to a dict that should be turned into a unicode string.

I do

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

Why are some of the most obvious things so complicated?

Alex Essilfie
  • 12,339
  • 9
  • 70
  • 108
Dave
  • 133
  • 1
  • 2
  • 9
  • 1
    "passing longs to a dict that should be turned into a unicode string"? How is that "obvious"? What *are* you trying to accomplish? – S.Lott Mar 03 '10 at 22:08
  • In JAVA, you can call the toString() method which you might think is obviously available in Python. And it does exist in Python via the str() method. Just not on the Object itself. – Dave Mar 03 '10 at 22:44
  • 1
    "not on the Object itself". `str( anything )` works for every type there is -- by definition. For your own classes, `def __str__(self)` to tailor what is returned (it's like Java's `toString`) What actual problem are you having? Can you provide code and sample output? – S.Lott Mar 04 '10 at 01:39

3 Answers3

37

To convert from a numeric type to a string:

str(100)

To convert from a string to an int:

int("100")

To convert from a string to a float:

float("100")
Mark Byers
  • 811,555
  • 193
  • 1,581
  • 1,452
2

You could do it like this 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'}

or in Python 3.x:

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

Note that strings in Python 3 are the same as unicode strings in Python 2.

AndiDog
  • 68,631
  • 21
  • 159
  • 205
0

You can do it this way

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

Perhaps this is clearer if there are only 2 or 3 keys/values

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

I think this would be better if there are more than 3 keys/values

for n in l:
    dict(zip(('my_key','myother_key'),map(unicode,n)))
John La Rooy
  • 295,403
  • 53
  • 369
  • 502