回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我的目录目录是<code>[parentid, name]</code>,如下所示:</p>
<pre><code>D = {0: [-1, 'C:'],
1: [0, 'BLAH'],
2: [0, 'TEMP'],
3: [1, 'BOOO'],
4: [1, 'AZAZ'],
5: [2, 'ABCD']}
</code></pre>
<p>我想从这条路走到完整的路:</p>
<pre><code>FULLPATHS = {}
for key, path in D.iteritems():
newpath = path[1]
if path[0] != -1:
newpath = FULLPATHS[path[0]] + '\\' + newpath
FULLPATHS[key] = newpath
</code></pre>
<p>它的工作原理是:</p>
<pre><code> {0: 'C:', 1: 'C:\\BLAH', 2: 'C:\\TEMP', 3: 'C:\\BLAH\\BOOO', 4: 'C:\\BLAH\\AZAZ', 5: 'C:\\TEMP\\ABCD'}
</code></pre>
<p>但现在,如果密钥是非递增的目录ID,则会出现棘手的部分:</p>
<pre><code> D = {0: [-1, 'C:'],
7: [0, 'TEMP'],
3: [122, 'BOOO'],
4: [122, 'AZAZ'],
5: [7, 'ABCD'],
122: [0, 'BLAH']}
</code></pre>
<p>在NTFS主文件表中经常是这样的(我正在阅读)</p>
<p>这个想法可能是:<em>“当到达<code>3: [122, 'BOOO']</code>时,让我们等待并推迟这个,一旦dir#122稍后将被处理”</em>。但这需要许多连续的循环来确保所有操作都是正确的</p>
<p><strong>如何从<code>[parentid, name]</code>目录方案转到完整路径?</strong></p>
<p>注意:这个问题不是Python特有的,所以我不是在寻找<code>os.path</code>解决方案,而是一个一般性的问题</p>