2014-12-03 81 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