从文本文件中读取,计算结果并打印出来(python)
我试图从一个.txt文件中收集一个列表,计算结果,然后像这样打印出来从文本文件中读取,计算结果并打印出来(python),python,Python,我试图从一个.txt文件中收集一个列表,计算结果,然后像这样打印出来 Bones found: Ankylosaurus: 3 Pachycephalosaurus: 1 Tyrannosaurus Rex: 1 Struthiomimus: 2 点文本文件的一个示例是 Ankylosaurus Pachycephalosaurus Ankylosaurus Tyrannosaurus Rex Ankylosaurus Struthiomimus Struthiomimus 我当前的代
Bones found:
Ankylosaurus: 3
Pachycephalosaurus: 1
Tyrannosaurus Rex: 1
Struthiomimus: 2
点文本文件的一个示例是
Ankylosaurus
Pachycephalosaurus
Ankylosaurus
Tyrannosaurus Rex
Ankylosaurus
Struthiomimus
Struthiomimus
我当前的代码从.txt文件中提取所有的名字,除了我完全被卡在那里
frequency = {}
for line in open('bones.txt'):
bones = line.split()
print(bones)
有什么帮助吗?将每一行存储为字典键(如果该行不在dict中,则初始化为0),并增加值:
frequency = {}
for line in open('bones.txt'):
if line not in frequency:
frequency[line] = 0
frequency[line] += 1
for k, v in frequency.items():
print('{}: {}'.format(k, v))
您可以使用集合库中的计数器函数来获取此信息
from collections import Counter
f=open('bones.txt','r')
ls=f.readlines()
s=dict(Counter(ls))
for k in s.keys():
print ('{}:{}'.format(k,s[k]))
使用
collections.defaultdict
Ex:
from collections import defaultdict
d = defaultdict(int)
with open(filename) as infile: #Open File
for line in infile: #Iterate Each Line
d[line.strip()] += 1
print("Bones found:")
for k, v in d.items():
print("{}: {}".format(k, v))
Bones found:
Struthiomimus: 2
Pachycephalosaurus: 1
Ankylosaurus: 3
Tyrannosaurus Rex: 1
输出:
from collections import defaultdict
d = defaultdict(int)
with open(filename) as infile: #Open File
for line in infile: #Iterate Each Line
d[line.strip()] += 1
print("Bones found:")
for k, v in d.items():
print("{}: {}".format(k, v))
Bones found:
Struthiomimus: 2
Pachycephalosaurus: 1
Ankylosaurus: 3
Tyrannosaurus Rex: 1
嘿,这似乎不起作用,它的打印是在最后一个的末尾添加数字强直龙3:Pachycephalosaurus 1:霸王龙1:Struthiomimus 1:Struthiomimus 1:在'for'行后面添加'line=line.rstrip()'即可。