<p>只需使用<a href="https://docs.python.org/3/library/collections.html#collections.defaultdict" rel="nofollow">^{<cd1>}</a>。你知道吗</p>
<p>代码:</p>
<pre><code>import collections
d = collections.defaultdict(list)
infile = 'filename'
with open(infile) as f:
a = [i.strip() for i in f]
a = [i.split() for i in a]
for key, value in a:
d[key].append(value)
l = list(d.values())
</code></pre>
<p>演示:</p>
<pre><code>>>> import collections
>>> d = collections.defaultdict(list)
>>> infile = 'filename'
>>> with open(infile) as f:
... a = [i.strip() for i in f]
>>> a = [i.split() for i in a]
>>> a
[['A', 'pgm1'], ['A', 'pgm2'], ['A', 'pgm3'], ['Z', 'pgm4'], ['Z', 'pgm5'], ['C', 'pgm6'], ['C', 'pgm7'], ['C', 'pgm8'], ['C', 'pgm9']]
>>> for key, value in a:
... d[key].append(value)
>>> d
defaultdict(<class 'list'>, {'A': ['pgm1', 'pgm2', 'pgm3'], 'C': ['pgm6', 'pgm7', 'pgm8', 'pgm9'], 'Z': ['pgm4', 'pgm5']})
>>> d.values()
dict_values([['pgm1', 'pgm2', 'pgm3'], ['pgm6', 'pgm7', 'pgm8', 'pgm9'], ['pgm4', 'pgm5']])
>>> list(d.values())
[['pgm1', 'pgm2', 'pgm3'], ['pgm6', 'pgm7', 'pgm8', 'pgm9'], ['pgm4', 'pgm5']]
>>>
</code></pre>
<hr/>
<p>blow代码执行与上述代码相同的操作,但保持顺序:</p>
<pre><code>infile = 'filename'
with open(infile) as f:
a = [i.strip() for i in f]
a = [i.split() for i in a]
def orderset(seq):
seen = set()
seen_add = seen.add
return [ x for x in seq if not (x in seen or seen_add(x))]
l = []
for i in orderset([i[0] for i in a]):
l.append([j[1] for j in a if j[0] == i])
</code></pre>