2015-07-03 55 views
1

我有一個Python元組,像這樣的Python元組,獲取不同的格式

((1420455415000L, 2L), (1420545729000L, 3L), (1420653453000L, 2L)) 

我想把它轉換成這種格式:

[[1420455415000, 2], [1420545729000, 3], [1420653453000, 2]] 

請注意,我也想去掉「當我將這個元組轉換爲字典時,它會自動刪除。我已經將元組的元組轉換爲列表使用:

def listit(t): 
     return list(map(listit, t)) if isinstance(t, (list, tuple)) else t 

但L仍然存在。這是一個問題,因爲我正在將數據發送到Javascript

我該怎麼做?

回答

4

如果你傳遞數據給JavaScript,你可以這樣做平凡與jsonĴ AVA 小號 CRIPT Ø bject ñ浮選)模塊:

>>> import json 
>>> json.dumps(((1420455415000L, 2L), (1420545729000L, 3L), (1420653453000L, 2L))) 
'[[1420455415000, 2], [1420545729000, 3], [1420653453000, 2]]' 
+0

這是我最初試圖將它轉換爲字典(k)後沒有給出所需的輸出。感謝您的幫助! – randomnessrandomly

0

爲了得到你的問題的輸出,你可以使用

t = ((1420455415000L, 2L), (1420545729000L, 3L), (1420653453000L, 2L)) 

l = [map(int,x) for x in t] 

轉換從longint只會工作,如果值小於或等於sys.maxint。否則它會保持很長時間。雖然L只是表示類型而不是值,但轉換不是必需的。

如果您將它傳遞給javascript,轉換爲json更有意義。

+0

你知道那長整數不過是整數,和鑄造贏得了」如果數字太大,不要做任何事情。 –

0

L表示數字的類型爲long,如果您100%確定該數字將小於int可以處理的限制(在python中,這意味着轉換爲int時,它將保持int並且如果數字非常大,則不會恢復爲長),那麼您可以簡單地使用int(num)進行轉換。但是請注意,L只是一個內部表示形式,當數字轉換爲字符串(或打印出來,並在內部轉換爲字符串)時不會顯示,只有在使用repr()時纔會顯示。

示例 -

>>> i = 2L 
>>> i 
2L 
>>> int(i) 
2 
>>> print i 
2 
>>> str(i) 
'2' 
>>> i 
2L 

你的情況,轉換渴望內部列表使用int -

>>> l = [1L , 2L , 3L] 
>>> print l 
[1L, 2L, 3L] 
>>> l = map(int, l) 
>>> l 
[1, 2, 3] 
>>> print l 
[1, 2, 3] 

如果可能的列表有子列表,使用遞歸函數,例如 -

def convertlist(l): 
    if isinstance(l , (list, tuple)): 
     return list(map(convertlist, l)) 
    elif isinstance(l , long): 
     return int(l) 
    else: 
     return l 
>>> l = [1L , 2L , [3L]] 
>>> convertlist(l) 
[1, 2, [3]] 
+0

是的,我的意思是一個數字在通過時會變成int。 –

+0

編輯並更改了措辭。 –

0

'L'只是表示變量的類型,在本例中是Long Integer。因此,無論您發送數據的方式如何,它都會表現爲Int。

也就是說,如果你真的不希望看到的是「L」,你將需要改變的類型爲整數,簡單int()