2010-03-03 121 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)))