擅长:python、mysql、java
<p>你可能想要一些不依赖于大量嵌套方括号的东西。使用对可变对象的引用可以很好地解决这个问题。在</p>
<pre><code>meta_line = 'abc/pqr123/xy2/yes//T,abc/pqr245/kl3/yes//T,abc/ijk123/op5/yes//T,abc/pqr245/kl4/yes//T'
data = dict()
for item in meta_line.split(','):
dref = data
dict_tree = item.strip().replace('//', '/').split('/')
for i, val in enumerate(dict_tree):
if val in dref:
pass
elif i != len(dict_tree) - 1:
dref[val] = dict()
elif i == len(dict_tree) - 1:
dref[val] = list()
dref = dref[val]
</code></pre>
<p>内环的每次迭代都会将引用<code>dref</code>下移一级,然后在外循环的每次迭代中重置它。最后,<code>data</code>应该包含嵌套的dict</p>
<p>编辑:对不起,我刚注意到你希望最后一级是一个列表。这是解决该问题的一种解决方案,但不是最好的(如果某个位置上有一个列表,而后面的数据条目希望它是dict,则会产生错误)。我可能会选择构建我的嵌套dict,然后递归地用空列表替换任何空dict来避免这个问题。在</p>