2016-06-15 68 views
-2

的顺序我有了格式词频的文本文件:排序词频通过降频

word<space>freq 

,其中频率是多少。我想对文件进行排序,例如频率按降序排列。对于这一点,我已经试过如下:

文件读入到一个字典:

kvp = {} 
d = {} 
with open("/home/melvyn/word_freq.txt") as myfile: 
    for line in myfile: 
     word, freq = line.partition(" ")[::2] 
     kvp[word.strip()] = int(freq) 

排序字典的值:

d = sorted(kvp.items(), key=lambda x:x[1]) 

写排序的字典到另一个文本文件:

with open('/home/melvyn/word_freq_sorted.txt', 'w') as f: 
     json.dump(d, f) 

我有以下问题: 1.排序是 没有发生。为什么? 2.如何在执行json.dump的同时在每个键值对之间添加新行?有没有更清晰的方法将字典内容写入文本文件?

+0

糟糕!错字。我没有转储d。抱歉。现在编辑这个问题。 – kskp

回答

0

而不是json.dump,请尝试使用file.write写入文件,根据需要格式化字符串。

import json 

kvp = {} 
d = {} 
with open("a.txt", "r") as f: 
    for line in f: 
     word, freq = line.partition(" ")[::2] 
     kvp[word.strip()] = int(freq) 

d = sorted(kvp.items(), key=lambda x:x[1]) 

with open("b.txt", "w") as f: 
    for i, v in d: 
     f.write(str(i) + " " + str(v) + "\n") 
+0

抱歉,延迟,但这工作像一个魅力。万分感谢 :) – kskp