我有一段代码
# 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
''')
基本上我试图从key和val中提供值,以便@data看起来像:
@data
word1, 21
word2, 17
我对这个特定领域并不是很了解,所以任何帮助都会受到赞赏。
答案 0 :(得分: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
答案 1 :(得分:0)
1)你应该开始做
print freq_dic.items()
查看结果并总结第一条指令的效用。
2) freq_list3 有什么意义? freq_list3 和 freq_list2 是两个具有相同值的不同对象。您是否需要两个具有相同值的对象(也就是说它们的地址不同:id(freq_list3)==id(freq_list2)
为False)?
3)
freq_list4 =[]
freq_list4=freq_list3[:10]
freq_list4 = [] 因为 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