Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从文本文件中读取,计算结果并打印出来(python)_Python - Fatal编程技术网

从文本文件中读取,计算结果并打印出来(python)

从文本文件中读取,计算结果并打印出来(python),python,Python,我试图从一个.txt文件中收集一个列表,计算结果,然后像这样打印出来 Bones found: Ankylosaurus: 3 Pachycephalosaurus: 1 Tyrannosaurus Rex: 1 Struthiomimus: 2 点文本文件的一个示例是 Ankylosaurus Pachycephalosaurus Ankylosaurus Tyrannosaurus Rex Ankylosaurus Struthiomimus Struthiomimus 我当前的代

我试图从一个.txt文件中收集一个列表,计算结果,然后像这样打印出来

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()'即可。