这是我的代码,但是我不知道如何删除重复的代码。我试过创建新的列表、dict、元组等。
编写一个程序,首先读取输入文件的名称,然后使用csv.reader()方法读取该文件。该文件包含一个由逗号分隔的单词列表。您的程序应该输出单词及其频率(每个单词在文件中出现的次数),并且没有任何重复。
例如:如果输入为:input1.csv
input1.csv的内容为:hello,cat,man,hey,dog,boy,Hello,man,cat,woman,dog,Cat,hey,boy
输出为:
hello 1
cat 2
man 2
hey 2
dog 2
boy 2
Hello 1
woman 1
Cat 1
注意:输出的末尾有一个换行符,input1.csv可供下载。
import csv
user_input = input()
with open(user_input, 'r') as name_CSV:
paper_copy = csv.reader(name_CSV)
for lines in paper_copy:
for w in lines:
words_cnt = lines.count(w)
print(w, words_cnt)
4条答案
按热度按时间p5fdfcr11#
一个非常复杂的方法是将所有单词添加到列表中,然后将列表转换为集合,这样就完成了
集合只允许一个文本示例,因此将字符串列表转换为集合{集合像字典一样位于大括号中}会立即删除所有重复项
c3frrgcw2#
你可以使用一些方法来唯一化一个
list
,但是最好的方法是把它转换成一个set
(在python中什么是集合?)因此,首先在您的单词中加载
csv.reader
,就像您被告知的那样:然后将其转换为
set
。我对set
进行了排序,以保持单词从word_list
开始出现的顺序,因为set
天生不保持任何顺序(根据定义,它们是无序的)。然后,为了获得输出,
for loop
遍历set
中的所有唯一单词,并将它们与list
中的单词进行比较,同时每次在for loop
中命中这些单词时,增加它们的计数:输出:
或者,您可以使用
count()
使用更少的行来完成它。我仍然认为至少看看上面的方法并尝试了解它是如何工作的是一个好主意。输出:
xkftehaa3#
本实验有多种方法。您可以像其他人一样使用集合,因为集合的独特之处在于它们不允许重复单词。另一种方法是创建一个列表并使用count()功能:
3okqufwl4#