2014-12-03 83 views
2

這肯定是一個愚蠢的錯誤,因爲我不知道dict.copy的功能。問題是我有一個字典充滿了數據,說x,我複製到另一個變量,說y,通過做y=numpy.copy(x)。事情是,後來我保存了變量y並將其寫入一個泡菜(我重複了幾次,寫了幾個文件;它是一個非常長的模擬的一部分!)。現在當我打開泡菜時,我得到一個包含我的詞典但位於ndarray對象內的ndarray對象,並且我不知道如何使用原始數據檢索原始詞典。一個工作示例:通過numpy.copy複製字典。現在是ndarray;如何恢復原來的字典?

import numpy 
x = {'a':[1,2,3], 'b':['foo','bar']} 
y = numpy.copy(x) 

我已經嘗試了很多沒有成功的事情;實際上有一種方法可以從新變量y中檢索原始字典x

在此先感謝您的幫助!

回答

3

在我的測試莫名其妙y.tolist()給原來的字典了。也許嘗試:)

一些更明智的方法或許是我從this question有:

y[()] 

和:

y.item() 
+0

我不敢相信這件事沒有發生在我身上,非常感謝你! – 2014-12-03 20:01:42

+0

@Néstor,那麼一個名爲'tolist'的方法返回一個字典會讓我覺得有點奇怪 – 2014-12-03 20:08:15

+1

但是有點直觀,因爲使用列表總是比使用numpy數組複雜得多。 – 2014-12-03 20:26:19

1

方式一:

d = y.ravel()[0] 
d.keys() 

['a', 'b'] 
+0

謝謝您的回答!它也可以工作! – 2014-12-03 20:01:57