擅长:python、mysql、java
<p>这里有一个可能更适合您的解决方案:</p>
<pre><code>import re
from collections import defaultdict
band_dict = defaultdict(list)
pattern = re.compile(r"\d+\. (?P<band>.+?) -\s?(?P<album>.+?) \((?P<year>\d+)\)")
with open("musiclist") as f:
for line in f:
match = pattern.match(line)
if match:
groupdict = match.groupdict()
band_dict[groupdict['band']].append((groupdict['album'], groupdict['year']))
else:
print "Error, no match for line %s" % line
for band in band_dict:
print band
for album, year in band_dict[band]:
print "\t%s: %s" % (album, year)
</code></pre>
<p>使用您提供的<code>musiclist</code>提供的数据运行这个函数可以得到</p>
^{pr2}$