You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

C语言:如何统计文件中各单词出现次数并去除重复条目

解决单词统计重复条目问题

嘿,我懂你现在的烦躁——明明已经算出了每个单词的次数,结果输出的时候重复条目扎堆,比如C : 2they : 2反复出现,看着特别乱对吧?别慌,咱从根源上解决这个问题:

问题根源

你大概率是把每次统计到的单词条目都存进了一个列表(或者类似的线性结构)里,而没有用键唯一的字典来存储单词和对应的计数。字典的特性就是键不能重复,刚好完美匹配“每个单词只保留一条带计数的条目”的需求。

修正方案(以Python为例,大学作业常用)

1. 用字典重新实现统计逻辑

这是最直接的解决方式,从统计环节就避免重复:

# 初始化空字典,键=单词,值=出现次数
word_counts = {}

# 读取文件(替换成你的文件名)
with open("your_assignment_file.txt", "r", encoding="utf-8") as file:
    # 读取所有文本并分割成单词(这里可以根据需求处理大小写、标点)
    words = file.read().split()
    
    # 遍历每个单词统计次数
    for word in words:
        # 可选:统一大小写(比如把C和c当成同一个单词,不需要就删掉这行)
        # word = word.lower()
        # 可选:去除单词首尾的标点(比如逗号、句号)
        # word = word.strip(",.!?;:'\"")
        
        # 更新字典计数
        if word in word_counts:
            word_counts[word] += 1
        else:
            word_counts[word] = 1

# 输出结果到控制台,每个单词只打印一次
print("单词统计结果:")
for word, count in word_counts.items():
    print(f"{word} : {count}")

# 可选:输出到新文件
with open("count_result.txt", "w", encoding="utf-8") as output_file:
    for word, count in word_counts.items():
        output_file.write(f"{word} : {count}\n")

2. 如果已经有了重复的统计结果,事后去重

要是你不想改之前的统计代码,只想处理已有的重复输出数据,可以把重复的条目转成字典再输出:

# 假设你已经有了一个重复的条目列表,比如:
duplicate_entries = ["C : 2", "they : 2", "are : 1", "not : 1", "they : 2", "written : 1", "in : 1", "C : 2"]

# 转成字典去重
unique_counts = {}
for entry in duplicate_entries:
    # 分割单词和计数
    word, count = entry.split(" : ")
    unique_counts[word] = int(count)  # 后面的条目会覆盖前面的,但计数是对的(因为你已经统计好次数了)

# 输出去重后的结果
for word, count in unique_counts.items():
    print(f"{word} : {count}")

额外小贴士

  • 记得处理大小写和标点:比如Cctheythey,会不会被当成不同单词?根据作业要求调整上面代码里的注释部分。
  • 字典的遍历顺序:Python 3.7+的字典会保留插入顺序,如果你需要按字母排序输出,可以用sorted(word_counts.items())来遍历。

内容的提问来源于stack exchange,提问作者Toby Cook

火山引擎 最新活动