Heim > Fragen und Antworten > Hauptteil
Ich möchte einige Daten in der Datei auf den Originalwert setzen und den fehlenden Wert auf 0 setzen, aber das Endergebnis ist alles 0. Was stimmt mit dem Code nicht?
Originaldaten-Bildbeschreibung
Verarbeitungsergebnis Bildbeschreibung
#!/usr/bin/python
#coding:utf-8
train_data = {}
input_data = open("train_tfidf.txt", "r").readlines()
output_data = open("single_tfidf.txt", "w")
for line in input_data:
temp_dict = {}
for i in range(60304):
temp_dict[i] = 0
datas = line.split()
for ele in datas:
try:
word_index = ele.split(":")[0]
tfidf = ele.split(":")[1]
if word_index == i:
temp_dict[i] = tfidf
except:
continue
# print temp_dict
# print word_index, tfidf
output_data.write(str(temp_dict))
output_data.write('\n')
[1]: /img/bVPJMi
[2]: /img/bVPJMV
PHP中文网2017-06-28 09:27:55
由于你range()
跑完了再去遍历的datas
,由于range()
是个迭代函数,所以在运行datas
的for
循环的时候,i
的值一直是60303,所以也就不满足if word_index == i
这个条件了,所以除了60303那项,其他的都还是初始值。其实建议这样改
if word_index == i:
temp_dict[i] = tfidf
这边可以直接判断temp_dict[word_index]
是否存在为0,如果没有定义,则应该是None
,所以这块改为
if temp_dict[word_index] == 0:
temp_dict[word_index] = tfidf