将元组值写入文件

时间:2011-03-31 14:33:37

标签: python

我有一段代码

# 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

我对这个特定领域并不是很了解,所以任何帮助都会受到赞赏。

2 个答案:

答案 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