class FrozenDict(dict):
def __init__(self,default=None):
if default: self.update(default)
def __hash__(self):
return id(self)
dictionary={FrozenDict({"dsa":"saas"}):"Hi"}
eval(str(dictionary))
TypeError: unhashable type: 'dict'
我想将一个字符串转换为原始格式,所以我没有收到错误。字典的 '原始' 的形式是{FrozenDict({"dsa":"saas"}):"Hi"}
将Python字符串转换为原始格式
事情是这样的:
eval(rawform(dictionary))
将是真棒..
编辑:
OrderedDict似乎工作,没有人知道为什么吗?
编辑:
这就是我试图使用pickle.loads
S'{\'Source\': {\'CollideObjects\': [], \'Depth\': 0, \'Events\': OrderedDict([(({\'function\': \'bi_create\', \'class\': \'\', \'name\': \'Create\'}, 0), {{\'data\': {\'raw\': \'Set saddasdsadsa to: (,)\', \'data\': {u\'function\': u\'asddsaadsasddsasdasdasddsasdasda(x=None,y=None)\', u\'src\': u\'GUI\\\\movetoxy.xml\', \'code\': u\'\\nreal=[0,0]\\ncurrent=self.sdsdadsaadssd()\\nif x!=None:\\n\\treal[0]=float(x)\\nelse:\\n\\treal[0]=current[1]\\nif y!=None:\\n\\treal[1]=float(y)\\nelse:\\n\\treal[1]=current[1]\\nself.SetPos(*real)\\n\', \'return\': u"\'Set Position to: (\'+str(x)+\',\'+str(y)+\')\'", u\'title\': u\'Set Position\', u\'image\': u\'modules\\\\Core\\\\images\\\\pos.png\', \'dddddddddd\': u\'self.SetPosition(,)\', \'html\': u\'C:\\\\sadsdadsad\\\\dsasasddsa\\\\modules\\\\Core\\\\GUI\\\\movetoxy.xml\', \'apply\': {\'name\': \'Self\', \'value\': \'\'}, u\'holder\': u\'False\', u\'class\': u\'object\'}, \'dialog\': u\'Set Position\', \'name_var\': {u\'y\': {\'class\': u\'wxTextCtrl\', \'value\': u\'\'}, u\'x\': {\'class\': u\'wxTextCtrl\', \'value\': u\'\'}}}}: {}})]), \'Sprite\': \'\'}, \'Window\': \'\', \'Type\': \'Object\', \'Name\': u\'Object1\', \'Id\': 1}'
不要只为'__hash__'返回'id(self)';这使得您的密钥不可能再次找到。 – 2013-05-10 17:19:29
嗯,我从互联网上了解到,你对我应该改变什么有什么建议吗? – 2013-05-10 17:20:40
请参阅http://docs.python.org/2/reference/datamodel.html#object.__hash__关于'__hash__'方法应该做什么。 – 2013-05-10 17:22:52