【发布时间】:2016-11-07 23:31:49
【问题描述】:
重新实现 counts 函数,从 a 中获取数字列表 文件。在文件中,每一行都将包含一个整数,什么都没有 别的。最后一个字符将是换行符。
filename :: 表示当前目录中文件名的字符串。
返回值:以 int 为键,以 # 次为值的字典。
file_counts("file1.txt") → {100:3, 3:1, 9:2}
file_counts("file2.txt") → {1:1, 2:1, 3:1, 4:1, 5:1}
测试用例:
检查当 file1.txt 包含 "1\n1\n1\n2\n3\n3\n3\n3\n5\n" 时,file_counts("file1.txt") == {1:3,2:1,3:4,5:1}。
检查当 file1.txt 包含 "100\n100\n3\n100\n9\n9\n" 时,file_counts("file1.txt") == {100:3, 3:1, 9:2}。
基本上,文件的字符将按它们出现的次数打印在新行上。所以对于 100:3,100 将被打印 3 次。
*背景信息:
def counts(xs):
d = {}
for item in xs:
d[item] = xs.count(item)
return d
这个函数对字典中的字符进行计数,并返回每个字符的计数*
我不知道如何实现这个功能。我一直在尝试多种方法,这是我得到的最接近答案的方法。我不确定丢失的部分是什么,希望能提供任何帮助。
我的代码:
def file_counts(filename):
dict = {}
with open(filename) as file_counts:
for line in file_counts:
我不知道下一步该做什么。我尝试编辑计数功能,但没有成功。
我是这个网站的新手,所以我对格式不肯定,所以请随时编辑格式问题,如果需要更多信息,请询问
【问题讨论】:
-
我建议不要使用
dict作为变量名——它会隐藏dict类型。同样,与您的函数同名的变量(例如file_counts)可能会导致您出现问题。您可以使用counts()实现file_counts(),将文件转换为ints 的列表并将结果列表传递给counts()。顺便说一句,标准collections模块中有一个Counter类可以为您执行此操作。 -
@AChampion 所以 file_count 只是计算文件中的字典?
标签: python python-3.x dictionary