<p>这包含实现所需结果的最简单的修复:</p>
<pre><code>def sumVectors(classB_infile, classA_infile, outfile):
class_dictA = {}
with open(classA_infile, "rb") as opened_infile_A:
for line in opened_infile_A:
items = line.split()
classA, feat, valuesA = items[:3]
class_dictA[feat.strip()] = float(valuesA)
class_dictB = {}
with open(classB_infile, "rb") as opened_infile_B:
for line in opened_infile_B:
items = line.split()
classB, feat, valuesB = items[:3]
class_dictB[feat.strip()] = float(valuesB)
####outfile
with open(outfile, "wb") as output_file:
for key in class_dictA:
if key in class_dictB:
weight = class_dictA[key] + class_dictB[key]
outstring = "\t".join([classA + "-" + classB, key, str(weight)])
else:
weight = class_dictA[key]
outstring = "\t".join([classA + "-" + classB, key, str(weight)])
output_file.write(outstring + "\n")
for key in class_dictB:
if key not in class_dictA: # if key was in A it was processed already
weight = class_dictB[key]
outstring = "\t".join([classA + "-" + classB, key, str(weight)])
output_file.write(outstring + "\n")
</code></pre>
<p>不过,这确实可以简化:</p>
^{pr2}$