我有一个文字文件,其格式为:
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时在每个键值对之间添加换行符?有没有更简洁的方法将字典内容写入文本文件?
答案 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")