<pre><code>master = None
tracking = {}
for line in open('inputfile.txt'):
if line.startswith("LIST"):
master = None
elif master:
tracking[master].add(line[1])
else:
master = line[1]
if master not in tracking:
tracking[master] = set()
for key,val in tracking.items():
print( "LIST %s :" % key, '\t'.join(val) )
</code></pre>
<pre><code>[timr@TimsPro:~/src]$ python x.py
LIST 0 : 9 3
LIST 3 : 8 5 6
LIST 4 : 8 5 6
</code></pre>
<p>如果需要的话,在打印前进行分类很容易</p>
<p><strong>编辑以处理多数字键。</strong></p>
<pre><code>master = None
tracking = {}
for line in open('inputfile.txt'):
word = line.split()[0]
if word == "LIST":
master = None
elif master:
tracking[master].add(word[1:])
else:
master = word[1:]
if master not in tracking:
tracking[master] = set()
for key,val in tracking.items():
print( "LIST %s :" % key, '\t'.join(val) )
</code></pre>
<p><strong>编辑以不合并重复键:</strong></p>
<p>如果我们不需要组合键,代码会更简单。我们根本不需要做任何全球跟踪。每个列表块都是独立的。您只需收集节点,直到到达块的末尾</p>
<pre><code>key = None
for line in open('inputfile.txt'):
word = line.split()[0]
if word == "LIST":
if key:
print( "LIST %s :" % key, '\t'.join(gather) )
key = None
elif key:
gather.append(word[1:])
else:
key = word[1:]
gather = []
print( "LIST %s :" % key, '\t'.join(gather) )
</code></pre>