重新实现从文件中获取数字列表的计数函数。在文件中,每一行将包含一个整数,而不包含其他任何整数。最后一个字符是换行符。
文件名::表示当前目录中文件名的字符串。
返回值:作为键的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:我被困在下一步该做什么了。我试图编辑count函数,但没有成功。
我是这个网站的新手,所以我在格式上不积极,所以请随意编辑格式化问题,如果需要更多的信息,请询问。
发布于 2016-11-08 00:15:45
可以使用read方法以字符串的形式读取整个文档。然后,您将在每个值之间有一个带有\n字符的字符串。可以使用split()方法将字符串缩减为值列表。最后,您可以使用collections.Counter模块来计数每个值的实例。
import collections as c
def file_counts(filename):
with open(filename, 'r') as f: # use flag 'r' to just read the doc
data = f.read() # read in the data file as a single string
data = data.strip() # get rid of the last \n on the end
data = data.split('\n') # break up the string into a list of values
counted_data = c.Counter(data)
return dict(counted_data)请注意,您应该避免使用dict来命名字典。dict是python中的一个保留词,用于从映射到字典的对象生成字典(例如,元组列表)。
https://stackoverflow.com/questions/40476549
复制相似问题