嵌套的dict按对象方式操作
2010年12月17日
没有评论
直接上代码:
class Struct(object):
def __init__(self, d):
self.__dict__ = d
def dict_to_struct(d):
if isinstance(d, (list, tuple)): return map(dict_to_struct, d)
elif not isinstance(d, dict): return d
return Struct(dict((k, dict_to_struct(v)) for (k,v) in d.iteritems()))
d = {'a': 1, 'b': {'c': 2},
'd': [ [{'s':'s', 'l': [{"ss":"ss"},1]},],
{'foo': "bar"}],
}
x = dict_to_struct(d)
print(x.a)
print(x.b.c)
print(x.d[1].foo)
print(x.d[0][0].s)
print(x.d[0][0].l[0].ss)
x.d[0][0].l[0].ss = "CCC"
print(x.d[0][0].l[0].ss)
def __init__(self, d):
self.__dict__ = d
def dict_to_struct(d):
if isinstance(d, (list, tuple)): return map(dict_to_struct, d)
elif not isinstance(d, dict): return d
return Struct(dict((k, dict_to_struct(v)) for (k,v) in d.iteritems()))
d = {'a': 1, 'b': {'c': 2},
'd': [ [{'s':'s', 'l': [{"ss":"ss"},1]},],
{'foo': "bar"}],
}
x = dict_to_struct(d)
print(x.a)
print(x.b.c)
print(x.d[1].foo)
print(x.d[0][0].s)
print(x.d[0][0].l[0].ss)
x.d[0][0].l[0].ss = "CCC"
print(x.d[0][0].l[0].ss)
Comments