擅长:python、mysql、java
<p>假设输入格式正确,每个块之间有双换行符,每个块以一个键名开始,块中的每一行都是该键的值,每个键在文件中是唯一的,并且假设<code>ml2</code>键的意思是<code>['/var','/home', '/lib']</code>,则可以通过理解创建结果:</p>
<pre><code>with open(file) as f:
result = {key:lst for key, *lst in (block.split('\n') for block in f.read().split('\n\n'))}
</code></pre>
<p>使用多行字符串而不是文件进行测试:</p>
<pre><code>>>> s = '''ml1
... /core
... /home
...
... ml2
... /var
... /home
... /lib
...
... cpuml1
... /home
... /root
... /raid'''
>>> {key:lst for key, *lst in (block.split('\n') for block in s.split('\n\n'))}
{'ml1': ['/core', '/home'], 'ml2': ['/var', '/home', '/lib'], 'cpuml1': ['/home', '/root', '/raid']}
</code></pre>