2010-03-03 87 views
10

什么是在Python中将int的long,double转换为字符串,反之亦然的最佳方式。Python类型转换

我正在遍历一个列表并将longs传递给一个应该变成unicode字符串的字典。

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

为什么一些最明显的事情这么复杂?

+1

“传递渴望的字典应该变成一个Unicode字符串”?那“显而易见”是怎么样的?你想达到什么目的? –

+0

在JAVA中,您可以调用您可能认为在Python中显然可用的toString()方法。它通过str()方法存在于Python中。只是不在对象本身。 – Dave

+1

“不在对象本身上”。 'str(任何)'适用于每种类型 - 根据定义。对于你自己的类,'def __str __(self)'来定制返回的东西(就像Java的'toString')你有什么实际的问题?你能提供代码和示例输出吗? –

回答

2

你可以在Python 2.x中这样做:

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

或在Python 3.X:

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

注意的是Python 3的字符串是一样的Python Unicode字符串2.

+0

OP使用n [0]的方式看起来不像是一个键 –

+0

@gnibbler:那么,我就是这么理解他的伪代码。 – AndiDog

+0

你明白了吗,这是一个正确的答案谢谢! – Dave

37

要从一个数字型转换为字符串:

str(100) 

从字符串转换为int:

int("100") 

要从字符串转换为浮动:

float("100") 
+0

谢谢,我在文档中找到它。但我非常感谢你的回答。 – Dave

+0

你的回答也是正确的 – Dave

+0

这是一个更好的答案。我不知道为什么它不是被接受的答案。 –

0

你能做到这样

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

如果只有2个或3个键/值,这也许更清楚

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

我认为这将是更好,如果有3个以上的键/值

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