【问题标题】:Python - counting words without utilizing built in functions or importing librariesPython - 在不使用内置函数或导入库的情况下计算单词
【发布时间】:2018-04-23 22:51:33
【问题描述】:

我在完成这项作业时遇到问题...我正在尝试计算一个单词在文本文件中出现的次数。

#most common word
fh = open("romeo.txt")
master_list = fh.read().split()
print(len(master_list))
compare_list = []
count_list = []
for word in master_list:
    if word not in compare_list:
        compare_list.append(word)
        count_list.append(1)
    else:
        for rw in range(len(compare_list)):
            for r in master_list:
                if compare_list[rw] == r :
                    count_list[rw] += 1

print(len(count_list))
print(count_list)

这是来自文本文件 romeo(dot)txt 的数据 但是柔和的光线透过那边的窗户打破 它是东方,朱丽叶是太阳 升起美丽的太阳,杀死嫉妒的月亮 谁已经病倒,悲痛欲绝

【问题讨论】:

  • 使用 key:value 为 word:count 的字典会更容易。此外,您可能需要从文件行中删除换行符。
  • 谢谢。不幸的是,我的教授不允许我们使用 dict(),但感谢您对 strip() 的建议。

标签: python


【解决方案1】:

您可以尝试使用dictionary 而不是列表。当您看到每个单词时,检查它是否在字典中,如果没有添加,则增加它的值。

【讨论】:

  • 不幸的是,我的教授不允许我们在这个作业中使用 dict()。但感谢您的建议。
【解决方案2】:

我认为你的问题出在这个区块

    if word not in compare_list:
        compare_list.append(word)
        count_list.append(1)
    else:
        for rw in range(len(compare_list)):
            for r in master_list:
                if compare_list[rw] == r :
                    count_list[rw] += 1

当在compare_list 中找到word 时,将执行else 子句。所以行为应该是找到它的索引,然后在count_list 中增加相应的索引 - 你首先遍历compare_list 的索引,这很好,但是然后不是将它与当前的word 进行比较,而是开始另一个遍历master_list。取出for r in master_list: 循环,将compare_list[rw]word 进行比较,我想你会到达那里。

正如其他人所指出的,dict 将是存储结果的更好结构 - 但很难从您的问题中判断这是否“违反规则”。

【讨论】:

  • 感谢您的推荐。是的, dict() 也是不允许的。我会给你建议和镜头,看看我是否能从那时起完成这个程序。你对 else 语句的解释让我对编码背后的逻辑大开眼界!
猜你喜欢
  • 1970-01-01
  • 2019-03-10
  • 2012-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-23
相关资源
最近更新 更多