我有一个像这样的python元组,
((1420455415000L, 2L), (1420545729000L, 3L), (1420653453000L, 2L))
我想将其转换为以下格式:
[[1420455415000, 2], [1420545729000, 3], [1420653453000, 2]]
请注意,我还要删除将此元组转换为dict时自动删除的'L'。我已经使用以下命令将元组元组转换为列表:
def listit(t):
return list(map(listit, t)) if isinstance(t, (list, tuple)) else t
但L仍然存在。这是一个问题,因为我将数据发送到Javascript
我该怎么做?
答案 0 :(得分:4)
如果您将数据传递给JavaScript,则可以使用json
( J ava S cript O bject N otation)模块:
>>> import json
>>> json.dumps(((1420455415000L, 2L), (1420545729000L, 3L), (1420653453000L, 2L)))
'[[1420455415000, 2], [1420545729000, 3], [1420653453000, 2]]'
答案 1 :(得分:0)
要获得问题中的输出,您可以使用
t = ((1420455415000L, 2L), (1420545729000L, 3L), (1420653453000L, 2L))
l = [map(int,x) for x in t]
从long
到int
的转换只有在值小于或等于sys.maxint
时才有效。否则它将保持很长时间。但是转换不是必需的,因为L
只是真正表示类型而不是值。
如果你将它传递给javascript,转换为json更有意义。
答案 2 :(得分:0)
L
表示数字类型为long
,如果您100%确定该数字小于int
可以处理的限制(在python中,这意味着在转换为int时,它将保持为int而不会恢复为long,如果数字非常大,则会发生这种情况),然后您可以使用int(num)
进行简单转换。但是请注意,L
只是一个内部表示,当数字转换为字符串(或打印,内部转换为字符串)时,它不会显示,只有在使用{{{}时才显示1}}。
示例 -
repr()
在你的情况下,要在列表中将long转换为int,请使用 -
>>> i = 2L
>>> i
2L
>>> int(i)
2
>>> print i
2
>>> str(i)
'2'
>>> i
2L
如果列表可能有子列表,请使用递归函数,如 -
>>> l = [1L , 2L , 3L]
>>> print l
[1L, 2L, 3L]
>>> l = map(int, l)
>>> l
[1, 2, 3]
>>> print l
[1, 2, 3]
答案 3 :(得分:0)
' L'仅表示变量的类型,在本例中为Long Integer。因此,无论您发送数据的方式如何,它都将表现为Int。
那就是说,如果你真的不想看到那个' L'您需要使用简单int():
将类型更改为整数