我有一个dict,看起来像这样:
{
'foo': {
'opt1': 1,
'opt2': 2,
},
'foo/bar': {
'opt3': 3,
'opt4': 4,
},
'foo/bar/baz': {
'opt5': 5,
'opt6': 6,
}
}
我需要让它看起来像:
{
'foo': {
'opt1': 1,
'opt2': 2,
'bar': {
'opt3': 3,
'opt4': 4,
'baz': {
'opt5': 5,
'opt6': 6,
}
}
}
}
我应该指出,可以并且将会有多个顶级键(在这种情况下为'foo')。我可能会把东西放在一起以获得我需要的东西,但我希望有一个更有效的解决方案。
答案 0 :(得分:8)
像这样:
def nest(d):
rv = {}
for key, value in d.iteritems():
node = rv
for part in key.split('/'):
node = node.setdefault(part, {})
node.update(value)
return rv
答案 1 :(得分:1)
def layer(dict):
for k,v in dict:
if '/' in k:
del dict[k]
subdict = dict.get(k[:k.find('/')],{})
subdict[k[k.find('/')+1:]] = v
layer(subdict)
答案 2 :(得分:0)
让这个lib以更好的方式打印你的词典。 pprint
。
https://docs.python.org/3.2/library/pprint.html