擅长:python、mysql、java
<p>下面是一些可以实现您所需的代码:</p>
<pre><code>COUNTRY_CSV1, TOPIC_CSV = 5, 6
with open('csv1.csv', 'r') as f:
first = {(rows[COUNTRY_CSV1], rows[TOPIC_CSV1]):
rows for rows in list(csv.reader(f))}
COUNTRY_CSV2, TOPIC_CSV2, RATING_CSV2 = 1, 2, 3
with open('csv2.csv', 'r') as f:
for row in csv.reader(f):
key = row[COUNTRY_CSV2], row[TOPIC_CSV2]
first.get(key, []).append(row[RATING_CSV2]
with open('output.csv', 'w') as f:
csv.writer(f).writerows(first.values())
</code></pre>
<p>这个问题的主要逻辑变化是,这里我们使用一个二元组作为键(根据要求,特定的二元组表示国家、主题)。在</p>
<p>但是也有很多其他的清理,而不是拆分然后重新合并行,我们也保留了值中的“关键”部分。这种冗余使得编写代码更加简单。在</p>
<p>索引已更改为常量,以便更清楚地知道需要哪些字段。最后,将“if”语句替换为get方法调用,该方法将返回一个新列表。这看起来像是虚假的开销,但它不太可能较慢(甚至可能更快,Python中的性能很奇怪),但可能不太容易出错。在</p>