如何在Python字典中忽略返回键值
我需要编写一个函数create_dictionary(filename),它读取命名文件并返回从对象名称到出现计数(猜测特定对象的次数)的字典映射。例如,给定一个包含以下内容的文件mydata.txt:如何在Python字典中忽略返回键值,python,python-3.x,Python,Python 3.x,我需要编写一个函数create_dictionary(filename),它读取命名文件并返回从对象名称到出现计数(猜测特定对象的次数)的字典映射。例如,给定一个包含以下内容的文件mydata.txt: abacus calculator modern computer abacus modern computer large white thing modern computer 这是我的程序,它可以很好地处理非空文本文件 from collections import Counter de
abacus
calculator
modern computer
abacus
modern computer
large white thing
modern computer
这是我的程序,它可以很好地处理非空文本文件
from collections import Counter
def create_dictionary(filename):
"""Cool Program"""
keys = Counter()
s = open(filename,'r').read().strip()
keys = (Counter(s.split('\n')))
dictionary = create_dictionary('mydata.txt')
for key in dictionary:
print(key + ': ' + str(dictionary[key]))
return keys
具体内容如下:
{'abacus': 2, 'calculator': 1, 'modern computer': 3, 'large white thing': 1}
当我有一个空文件(例如blank.txt)时,该函数必须忽略所有空行。因此,print语句必须返回空白。但不管我怎么努力,我都会得到“:1”。哦,这里有一些简单的限制:
以下是一些限制条件:
- 您可以假设给定的文件存在,但它可能是空的(即不包含任何行)
- 键必须按照它们在输入文件中出现的顺序插入字典
- 应该从对象名称中去掉前导和尾随空格
- 应忽略空对象名称(例如,空行或只有空格的行)
有什么建议吗?先修复压痕先修复压痕Hanks John。我一直怀疑读线是一个不可分割的组成部分。现在可以了。我理解这种机制。@Pamela readlines在这里应该没有影响。你可以很容易地忽略它。唯一的区别是
readlines
强制立即读取文件。如果不使用它,python将以惰性方式读取文件。如果文件很大,这可能会产生影响,对于小文件来说,这并不重要。谢谢John。我一直怀疑读线是一个不可分割的组成部分。现在可以了。我理解这种机制。@Pamela readlines在这里应该没有影响。你可以很容易地忽略它。唯一的区别是readlines
强制立即读取文件。如果不使用它,python将以惰性方式读取文件。如果文件很大,这可能会产生影响,而对于小文件来说,这并不重要。
lines = open(filename,'r').readlines()
keys = Counter([line.strip() for line in lines if line.strip()])