python設(shè)置了值更改語(yǔ)句,為什么沒(méi)起作用?
問(wèn)題描述
我想將文件的數(shù)據(jù)有的則設(shè)為原來(lái)的值,沒(méi)有的值則設(shè)為0,可是最后結(jié)果都是0,代碼哪里不正確?原始數(shù)據(jù)圖片描述處理結(jié)果 圖片描述
#!/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
問(wèn)題解答
回答1:由于你range()跑完了再去遍歷的datas,由于range()是個(gè)迭代函數(shù),所以在運(yùn)行datas的for循環(huán)的時(shí)候,i的值一直是60303,所以也就不滿(mǎn)足if word_index == i這個(gè)條件了,所以除了60303那項(xiàng),其他的都還是初始值。其實(shí)建議這樣改
if word_index == i: temp_dict[i] = tfidf
這邊可以直接判斷temp_dict[word_index]是否存在為0,如果沒(méi)有定義,則應(yīng)該是None,所以這塊改為
if temp_dict[word_index] == 0: temp_dict[word_index] = tfidf
相關(guān)文章:
