首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >定义file_counts

定义file_counts
EN

Stack Overflow用户
提问于 2016-11-07 23:31:49
回答 1查看 439关注 0票数 0

重新实现从文件中获取数字列表的计数函数。在文件中,每一行将包含一个整数,而不包含其他任何整数。最后一个字符是换行符。

文件名::表示当前目录中文件名的字符串。

返回值:作为键的int的字典,作为值的事件的#。

代码语言:javascript
复制
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次。

*背景资料:

代码语言:javascript
复制
def counts(xs):
    d = {}
    for item in xs:
         d[item] = xs.count(item)
    return d 

此函数计算字典中的字符并返回每个字符的计数*

我不知道如何实现这一职能。我一直在尝试多种方法,这是我得到的最接近的答案。我不知道丢失的部分是什么,我希望得到任何帮助。

我的代码:

代码语言:javascript
复制
def file_counts(filename):
    dict = {}
    with open(filename) as file_counts:
         for line in file_counts:

我被困在下一步该做什么了。我试图编辑count函数,但没有成功。

我是这个网站的新手,所以我在格式上不积极,所以请随意编辑格式化问题,如果需要更多的信息,请询问。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-08 00:15:45

可以使用read方法以字符串的形式读取整个文档。然后,您将在每个值之间有一个带有\n字符的字符串。可以使用split()方法将字符串缩减为值列表。最后,您可以使用collections.Counter模块来计数每个值的实例。

代码语言:javascript
复制
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中的一个保留词,用于从映射到字典的对象生成字典(例如,元组列表)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40476549

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档