python dict getitem_Python里如何在__getitem__语句执行完之后转存

因为你a["foo"]之后就跟你的A没关系了,也就和你的dump没关系了,a["foo"]["bar"]=xx的时候就没法dump了。

给你的A设置一个同意的dump,然后自己修改了数据之后手动的a.dump(),一下吧。

莫非LZ要的是这种变态代码:

import types

data = {}

def dump():

print 'dump: %s'%data

class A:

def __init__(self, d={}):

self.data = d

# wrap all dictionary values

for k,v in self.data.items():

if type(v) == types.DictType:

self.data[k] = A(v)

def __getitem__(self, name):

return self.data[name]

def __setitem__(self, name, value):

if type(value) == types.DictType:

# if dictionary, wrap it

self.data[name] = A(value)

else:

self.data[name] = value

dump()

def __repr__(self):

return repr(self.data)

a = A(data)

a["foo"] = {}

a["foo"]["bar"] = 123

a['User1'] = {

"name":"robin",

"age":10,

}

a["User1"]["info"]={}

a["User1"]["info"]["address"] = "A block"

a["User1"]["info"]["mobile"] = "110"

a["deepdic"] = {

1:{

2:{

3:{

4:{

5:{

6:{

7:{

}

}

}

}

}

}

}

}

a["deepdic"][1][2][3][4][5][6][7]["a"] = "AAA"

a["deepdic"][1][2][3][4][5][6][7]["b"] = "BBB"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值