我想將檔案的資料有的則設為原來的值,沒有的值則設為0,可是最後結果都是0,程式碼哪裡不正確?
原始資料圖片描述
處理結果圖片描述
#!/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
由於你
range()
跑完了再去遍歷的datas
,由於range()
是個迭代函數,所以在運行datas
的for
循環的時候,i
的值一直是,所以也就不滿足if word_index == i
這個條件了,所以除了60303那項,其他的都還是初始值。其實建議這樣改這邊可以直接判斷
temp_dict[word_index]
是否存在為0,如果沒有定義,則應該是None
,所以這塊改為