【发布时间】:2015-09-26 00:12:14
【问题描述】:
我需要一组 {a:{}{b:{},{c:{}}}} 形式的嵌套字典,其中 a、b 和 c 是键。我试过下面的代码。
from collections import defaultdict
def dictizeString(string,dictionary) :
while string.startswith('/'):
string = string[1:]
parts = string.split('/',1)
if len(parts)>1:
branch = dictionary.setdefault(parts[0],[dict()])
dictionary[parts[0]].append(dict())
dictizeString(parts[1], branch)
else:
if dictionary.has_key(parts[0]):
dictionary[parts[0]]=dict()
else:
dictionary[parts[0]]=[dict()]
dictionary[parts[0]].append(dict())
d={}
dictizeString('/a/b/c/d', d)
print d
执行此代码会导致错误“list”对象没有属性“setdefault”。该代码适用于第一次迭代(即 a),但在第二次迭代(即 b)时抛出上述错误。
附加功能适用于代码最后 6 行中的 else 部分。我尝试在 if 情况下使用相同的逻辑,但它会引发错误。
【问题讨论】:
-
打印 d 时您希望输出的样子如何?
-
@dopstar 我希望它在 print d 上是这样的 {a:{}{b:{},{c:{}}}}。 Joshua 对我的代码所做的微小改动正是我所需要的。
标签: python dictionary nested