【问题标题】:Sort word frequencies by descending order of frequencies按频率降序排列词频
【发布时间】:2016-06-15 03:15:36
【问题描述】:

我有一个文本文件,其词频采用以下格式:

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

【问题讨论】:

  • 糟糕!错字。我确实转储了。对不起。现在编辑问题。

标签: python sorting dictionary


【解决方案1】:

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

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")

【讨论】:

  • 抱歉耽搁了,但这就像一个魅力。非常感谢:)
猜你喜欢
  • 1970-01-01
  • 2013-12-28
  • 1970-01-01
  • 2014-11-07
  • 1970-01-01
  • 1970-01-01
  • 2016-08-27
相关资源
最近更新 更多