按频率降序对字频进行排序

时间:2016-06-15 03:15:36

标签: python sorting dictionary

我有一个文字文件,其格式为:

word<space>freq

其中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时在每个键值对之间添加换行符?有没有更简洁的方法将字典内容写入文本文件?

1 个答案:

答案 0 :(得分: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")