Я пытаюсь собрать список из файла .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)
Любая помощь, пожалуйста?
3 ответа
Использование collections.defaultdict
Пример:
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
Сохраните каждую строку как ключ словаря (инициализируется 0, если строка не в dict) и увеличивает значение:
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))
Вы можете использовать функцию Counter из библиотеки коллекций, чтобы получить это.
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]))
Похожие вопросы
Новые вопросы
python
Python - это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Тем не менее, для вопросов о Python, связанных с версией, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas и NumPy) включите его в теги.