美文网首页Go lang学习陪你刷算法系列
Go语言编写从文件中统计词频并升序输出

Go语言编写从文件中统计词频并升序输出

作者: SHAN某人 | 来源:发表于2017-12-25 17:35 被阅读3次

1.文件读取

这里需要用到逐行读取文件内容并将其切片化

func readFile(filePath string) []string { // 返回切片
    // 初始化一个切片
    list := []string{}

    f, err := os.Open(filePath)
    if err != nil {
        //panic(err)
        p("%s 文件不存在", filePath)
    }
    defer f.Close()

    rd := bufio.NewReader(f)
    for {
        line, err := rd.ReadString('\n') //以'\n'为结束符读入一行

        if err != nil || io.EOF == err {
            break
        }
        list = append(list, line)
        //fmt.Println("=====", line)
    }
    return list
}

2. 统计词频

这里用 map 进行词频统计,然后怎么对map 根据 v值 升序输出呢。
我这里采用的思路如下,自己瞎想的,可以完善。

    1. 将map 逆转 使得 map1<k,v> 变成 map2<v,k>
    1. 将v无重复切片化
    1. 遍历切片 打印 map2 就ok 了
func wordCount(list []string) {
    s_map := make(map[string]int) //建立map
    //对s_arr中的每个字符进行循环
    for _, str := range list {
        if s_map[str] == 0 { //当还没有统计过该字符时,赋值为1
            s_map[str] = 1
        } else { //当统计过该字符时,更新计数值+1
            s_map[str] = s_map[str] + 1
        }
    }
    // 对map 按 值排序

    r_map := make(map[int][]string) // 逆转后的map
    // 新建一个切片
    values := []int{}
    // 逆转 <k,v> --&gt;  <v,k>
    for k, v := range s_map {
        r_map[v] = append(r_map[v], k)
    }
    // 将 value 切片化
    for k, _ := range r_map {
        values = append(values, k) // 这里key 不重复
    }
    sort.Ints(values) // 对切片进行排序,注意这里的排序是原地排序,并且是降序

    for i := range values {
        p("  ", values[i], r_map[values[i]])
       // 也可以按照如下输出
                    /*count := values[i]
        slice := r_map[values[i]]

        for i := 0; i < len(slice); i++ {
            p("  ", count, slice[i])
        }*/
    }
}

</v,k></k,v></v,k></k,v>


运行结果

相关文章

  • Go语言编写从文件中统计词频并升序输出

    1.文件读取 这里需要用到逐行读取文件内容并将其切片化 2. 统计词频 这里用 map 进行词频统计,然后怎么对m...

  • Go语言:文件追加内容

    代码实例 相关文章 Go语言:获取某个目录下的所有文件 Go语言:读取文本文件并输出内容 Go语言:将字符串保存成...

  • Go语言:将字符串保存成文件

    代码实例 相关文章 Go语言:获取某个目录下的所有文件 Go语言:读取文本文件并输出内容 Go语言:将字符串保存成...

  • Python3.5+PyQt5词频统计(三)

    主程序编写 一、打开文件 二、读取文件,存入字典 三、统计词频 将字典中的单词按照key值(即单词)降序排序,如不...

  • Go 实现词频统计

    功能 统计多个文件中英文单词出现的次数 按照词频从多到少排序输出 支持并发 实现 创建 file.txt 内容如下...

  • python词频统计实例

    项目概述 通过两个Python文件实现一个简单的词频统计。 本工程共有4个文件: file01:要统计的词频文件。...

  • Go命令

    go env 用于打印Go语言的环境信息。go run 编译并运行源码文件。go build 编...

  • GO学习笔记(17) -测试

    测试工具 —go test go test命令用于对Go语言编写的程序进行测试。 测试规范 测试文件必须为"_te...

  • Python词频统计

    1.合并数据文件 2.词频统计

  • Go语言——DES算法实现

    Go语言手动编写DES算法,文件加解密 前言 继续上一篇,这一次使用Go语言编写DES算法,大二实验课当时是用的M...

网友评论

    本文标题:Go语言编写从文件中统计词频并升序输出

    本文链接:https://www.haomeiwen.com/subject/ywalgxtx.html