<p>我会使用这里的<a href="https://docs.python.org/2/library/csv.html" rel="nofollow">^{<cd1>} module</a>来读取格式,而不是手动拆分。你知道吗</p>
<p>将值收集到集合对象中,以便只获得唯一的值:</p>
<pre><code>import csv
with open('filepath', 'rb') as infile:
reader = csv.reader(infile)
dic_c1c2_products = {}
for c1, c2, p, trade in reader:
dic_c1c2_products.setdefault(c1, set()).add(int(p))
dic_c1c2_products.setdefault(c2, set()).add(int(p))
</code></pre>
<p>如果字典中没有键(<code>c1</code>或<code>c2</code>),则<code>dict.setdefault()</code>调用插入一个空的<code>set()</code>对象。你知道吗</p>
<p>演示:</p>
<pre><code>>>> import csv
>>> sample = '''\
... GER,USA,1,100
... GER,ITA,1,80
... JPN,ITA,2,120
... USA,GBR,1,70
... DNK,CAN,2,100
... USA,DNK,2,70
... DNK,GER,1,40
... FRA,GER,4,50
... USA,GER,6,80
... '''.splitlines()
>>> reader = csv.reader(sample)
>>> dic_c1c2_products = {}
>>> for c1, c2, p, trade in reader:
... dic_c1c2_products.setdefault(c1, set()).add(int(p))
... dic_c1c2_products.setdefault(c2, set()).add(int(p))
...
>>> dic_c1c2_products
{'GER': set([1, 4, 6]), 'FRA': set([4]), 'USA': set([1, 2, 6]), 'JPN': set([2]), 'DNK': set([1, 2]), 'ITA': set([1, 2]), 'GBR': set([1]), 'CAN': set([2])}
>>> from pprint import pprint
>>> pprint(_)
{'CAN': set([2]),
'DNK': set([1, 2]),
'FRA': set([4]),
'GBR': set([1]),
'GER': set([1, 4, 6]),
'ITA': set([1, 2]),
'JPN': set([2]),
'USA': set([1, 2, 6])}
</code></pre>