创建目录中多个文本文件的字数统计字典

2024-06-09

我在 word_count_directory() 函数中使用 build_dict() 函数来创建目录中三个文件的字数统计字典。我想创建三个字典(每个文件一次一个)并更新以前的字典。我的代码创建一个字典(word_count),它同时组合所有三个字典。我想知道如何实现这一点?

def build_dict(filename):
   f = open(filename, 'rU')
   words = f.read().split()
   count = {}

   for word in words:
      word = word.lower()
      if word not in count:
        count[word] = 1
      else:
        count[word] += 1

   f.close()

   return count
## print build_dict("C:\\Users\\Phil2040\\Desktop\\word_count\\news1.txt")

import os
import os.path
def word_count_directory(directory):
    wordcount={}
    filelist=[os.path.join(directory,f) for f in os.listdir(directory)]
    for file in filelist:
       wordcount=build_dict(file)  # calling build_dict function
    return wordcount
print word_count_directory("C:\\Users\\Phil2040\\Desktop\\Word_count")

Use collections.Counter https://docs.python.org/2/library/collections.html#collections.Counter.

示例文件:

/tmp/foo.txt

hello world
hello world
foo bar
foo bar baz

/tmp/bar.txt

hello world
hello world
foo bar
foo bar baz
foo foo foo

您可以创建一个Counter每个文件,然后将它们添加在一起!

from collections import Counter

def word_count(filename):
    with open(filename, 'r') as f:
        c = Counter()
        for line in f:
            c.update(line.strip().split(' '))
        return c

files = ['/tmp/foo.txt', '/tmp/bar.txt']
counters = [word_count(filename) for filename in files]

# counters content (example):
# [Counter({'world': 2, 'foo': 2, 'bar': 2, 'hello': 2, 'baz': 1}),
#  Counter({'foo': 5, 'world': 2, 'bar': 2, 'hello': 2, 'baz': 1})]

# Add all the word counts together:
total = sum(counters, Counter())  # sum needs an empty counter to start with

# total content (example):
# Counter({'foo': 7, 'world': 4, 'bar': 4, 'hello': 4, 'baz': 2})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

创建目录中多个文本文件的字数统计字典 的相关文章

随机推荐

  • Sightly 中有 requestScope 变量吗?

    在 JSTL 中 您可以在组件中设置变量 这些变量可用于同一请求中该组件之后的所有其他组件 在AEM中使用sightly是否有等效的方法在组件之间传递数据 我们正在研究的用例是我们希望一个组件知道它何时通过另一组件包含 而不是拖入 pars
  • Document.querySelector 返回 null,直到使用 DevTools 检查元素

    我正在尝试创建一个 Chrome 扩展程序 用于查找 Facebook 上的 赞助 帖子并将其删除 在执行此操作时 我注意到 Google Chrome 在 Facebook com 上的这种相当奇怪的行为 其中对现有元素的某些类型的查询
  • 方法未到达完成块

    我正在使用SKStoreProductViewController使用以下方法显示 iTunes 产品 该方法被调用 但我没有成功或错误 知道为什么吗 IBAction func BuySomething sender AnyObject
  • 使用 asp.net mvc 4 的简单注入器,从另一个程序集加载控制器

    我正在开发一个 asp net mvc 4 站点 使用 Simple Injector 作为 Ioc 工具 这将是一个可插拔的架构 某些控制器和视图位于另一个程序集中 另一个 mvc4 应用程序 Plugin Web dll 从主应用程序中
  • Laravel 5.4 合并两个集合

    所以我有两个收藏 sales and costs 现在我需要将它们合并为我的一个集合foreach状况 我不确定是否可以在一个集合中使用两个集合foreach 原始查询 Raw MySQL Queries for Sales total s
  • 我可以向函数添加属性以防止重入吗?

    目前 我有一些如下所示的功能 private bool inFunction1 false public void function1 if inFunction1 return inFunction1 true do stuff whic
  • 位图 getWidth 返回错误值

    我的 android 应用程序可绘制文件夹中有一张 jpg 图像 分辨率为 1000x600 我像这样将该图像加载到位图 Bitmap bitMap BitmapFactory decodeResource getResources R d
  • Asp.net 发布构建与调试构建

    如何确定我的应用程序是否编译为 发布 而不是 调试 我转到 VS 2008 项目属性 gt 构建并将配置从调试设置为发布 但我发现没有任何变化 这是一个 ASP NET 项目 HttpContext IsDebuggingEnabled h
  • CMake:如何更改单个目标的编译器

    我有使用交叉编译器的嵌入式项目 我想介绍一下Google测试 用原生GCC编译器编译 另外使用 CTC 编译器构建一些单元测试目标 Briefly 我有 3 个不同的目标并用 3 个不同的编译器编译它们 如何表达它CMakeLists tx
  • 使用 lambda 从数组中选择每隔一个元素[重复]

    这个问题在这里已经有答案了 C 4 0 如何使用 lambda 表达式完成以下操作 int a new int 8 0 1 2 3 4 5 6 7 Now fetch every second element so that we get
  • Shader的功能参数表现

    我试图了解如何在着色器语言中实现传递参数 我读过几篇文章和文档 但仍然有一些疑问 特别是我试图理解与C 函数调用 特别强调性能 之间略有差异HLSL Cg and GLSL但我猜下划线的实现非常相似 到目前为止我所理解的 除非另有说明 函数
  • 渲染时捕获 NoReverseMatch:未找到带有参数 '(1,)' 和关键字参数 '{}' 的 '' 反转

    我的看法 def display request feed SoukFeedMaster objects filter person request user return render request soukfeed display h
  • RxJava:如何多播 Completable?

    我有一个方法返回一个Completable我希望它是multicasted因为任何第二个订阅者都不应该重新执行该方法 而是应该获得相同的旧发出值 我用它实现了replay autoConnect 如下并按预期工作 public Comple
  • 空序列的算术平均值是多少?

    免责声明 不 我没有找到任何明显的答案 这与我的预期相反 在寻找代码示例时 算术平均值 我可以通过谷歌找到的前几个例子似乎是这样定义的 空序列生成的平均值为0 0 eg here https rosettacode org wiki Ave
  • 每 2 秒打印一次从 1 到 10 的数字

    我想每 n 秒后打印一次数字 并且根据一些条件我正在更改计时器以及停止打印功能 我已经这样做了 var myfunc value 1 running false timer 1000 start function this running
  • 在css3动画中添加延迟时间

    我只是给div设置了一个动画 就成功了 现在我想要证明它 因为它的延迟太短了 那么如何添加动画 0 到25 和动画 25 到50 之间的延迟时间 这是代码 flow position absolute webkit animation my
  • SingleResult.Create 在空 IQueryable 上的 Odata 序列化错误

    我正在使用 OData v4 并尝试让一个非常简单的控制器工作 控制器 public class ProductController ODataController readonly MasterDataEntities db new Ma
  • Elixir 中的斜线符号是什么意思?

    在 Elixir 文档中 他们继续使用带有斜杠的奇怪符号 例如 is boolean 1 IO puts 1 String length 1 is function 2 2 我只是猜测 但我认为它指的是数量 但如果是这样的话 为什么文档中没
  • Three.js 变换控件 - 如何仅显示两个箭头

    我必须仅使用场景中的变换控件在 XY 方向上显示两个箭头或变换对象 通常 我会问您到目前为止尝试过什么 但是没有关于此控件的文档 如果您不知道自己在寻找什么 那么它是一个相当复杂的对象 需要深入研究 考虑你有一个TranformContro
  • 创建目录中多个文本文件的字数统计字典

    我在 word count directory 函数中使用 build dict 函数来创建目录中三个文件的字数统计字典 我想创建三个字典 每个文件一次一个 并更新以前的字典 我的代码创建一个字典 word count 它同时组合所有三个字