2015-04-06 25 views
0

我想序列充滿了複數的ndarray /列表中的數組/列表/墊,示例代碼是在這裏:如何序列充滿複數

a = [None] 
a[0] = 0.006863076166054825+0j 
a 
[(0.006863076166054825+0j)] 
>>> b = json.dumps(a) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "D:\Python27\lib\json\__init__.py", line 243, in dumps 
    return _default_encoder.encode(obj) 
    File "D:\Python27\lib\json\encoder.py", line 207, in encode 
    chunks = self.iterencode(o, _one_shot=True) 
    File "D:\Python27\lib\json\encoder.py", line 270, in iterencode 
    return _iterencode(o, 0) 
    File "D:\Python27\lib\json\encoder.py", line 184, in default 
    raise TypeError(repr(o) + " is not JSON serializable") 
TypeError: (0.006863076166054825+0j) is not JSON serializable 

所以如何處理這個問題?

回答

0

json.dumps(a)將失敗,因爲函數在嘗試解釋複數時無法處理。傳遞價值的唯一可能性是字符串:

a = [1] 
a[0] = "0.006863076166054825+0j" 
b = json.dumps(a) 
print b 

其輸出

["0.006863076166054825+0j"] 
0

OK讓我說清楚

我找到了另一種方式來做到這一點。 使用模塊鹹菜

例如:

fp = open("1.txt","w") 
a = [1,2,3] 
pickle.dump(a,fp,0) 
fp.close() 

加載是相同的:

fp = open("1.txt") 
a = pickle.load(fp) 
print a 
fp.close() 

它可以,只要它可以找到該類序列的任何對象