2011-03-31 52 views
-2

我有一段代碼寫作元組值到一個文件

# create list of (val, key) tuple pairs 
freq_list2 = [(val, key) for key, val in freq_dic.items()] 
# sort by val or frequency 
freq_list2.sort(reverse=True) 
freq_list3 = list(freq_list2) 
# display result as top 10 most frequent words 
for freq, word in freq_list2: 
    print word, freq 
freq_list4 =[] 
freq_list4=freq_list3[:10] 

print freq_list4 

f = open("wordfreq.txt", "w") 
f.write(str(freq_list4)) 
f.close() 

output_filename = 'wordfreq.arff' 
with open(output_filename,"w") as fp: 
     fp.write('''@RELATION wordfrequency 

@ATTRIBUTE word string 
@ATTRIBUTE frequency numeric 

@DATA 
''') 

基本上我試圖讓@data看起來像餵養從鍵和Val值:

@data 
word1, 21 
word2, 17 

我對於這個特定的區域來說這不是很好,所以任何幫助都會真的被讚賞。

回答

0

1)你應該開始做

print freq_dic.items() 

看到的結果,並得出結論:關於第一條指令的效用。

2)什麼的freq_list3點? freq_list3freq_list2是具有相同值的兩個不同的對象。你需要兩個對象(即他們不會忽略是不同的:id(freq_list3)==id(freq_list2)是假)相同的值嗎?

3)

freq_list4 =[] 
freq_list4=freq_list3[:10] 

freq_list4 = [] 是一個無用instuction,由於freq_list4然後重新分配到的值freq_list3另一個目的[10]

4)如果yoiu要記錄在一個文件中的元組的值,必須在列表中讀取這些值,也就是從列表中提取它們,

freq_ list4 [0]是在freq_list4第一元組

freq_list4 [0] [0]是第一元組的在freq_list4 freq_list4第一元素[0] [1]是第一個元組的在freq_list4

第二元件

如果重複就行了:

for item in freq_list4: 
    print item[0] 
    print item[1] 

for k,v in freq_list4: 
print k 
print v 
0

簡短的回答:

for my_tuple in freq_list: 
    fp.write("{1:s}, {0:.4f}\n".format(*my_tuple)) # assuming (freq, word) tuples 

較長,詳細的變種,以防萬一:

for my_tuple in freq_list: 
    freq, word = my_tuple # unpacks (0.123, 'the') into word='the' and freq=0.123 
    fp.write(word) # 'the' 
    fp.write(", ") 
    fp.write("{0:.4f}".format(freq)) # transform the number 0.123 into string '0.123' 
    fp.write("\n") # end of line