python設置了值更改語句,為什么沒起作用?
問題描述
我想將文件的數據有的則設為原來的值,沒有的值則設為0,可是最后結果都是0,代碼哪里不正確?原始數據圖片描述處理結果 圖片描述
#!/usr/bin/python#coding:utf-8train_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] = tfidfexcept: continue # print temp_dict # print word_index, tfidf output_data.write(str(temp_dict)) output_data.write(’n’) [1]: /img/bVPJMi [2]: /img/bVPJMV
問題解答
回答1:由于你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
相關文章:
