Python3 - Как читать слова из списка как ключи, а затем подсчитывать и сохранять их вхождение как значения для ключей

Я получаю информацию из файла, который имеет содержимое, подобное приведенному ниже:

1:Record:Place1:Ext12 2:Record:Place2:Ext2 3:Record:Place1:Ext19 4:Record:Place1:Ext12

Я пытаюсь сохранить слова, такие как Place1 и Place2, в словаре в качестве ключей, а затем подсчитать их вхождения и сохранить целое число count в качестве значений для этих ключей соответственно.

file = open('./Records.txt', mode='r')
d_file = file.read()

location = dict()
count = 0

for item in d_file.splitlines():
    items = item.split(':')
    key = items[2]
    if key == items[2]:
       count += 1
       location[key] = count

print(location)

person Crozier Ntwe    schedule 26.05.2020    source источник


Ответы (1)


В модуле коллекций есть функция Counter. (Нажмите, чтобы прочитать официальную документацию)

Он делает именно то, что вы хотите. Он принимает итерацию или отображение и возвращает в качестве значения набор ключей и количество вхождений.

from collections import Counter
#open file, etc
keys = [item.split(':')[2] for item in d_file.splitlines()]
print(Counter(keys))

В приведенном выше фрагменте создается список всех вхождений ключа в соответствии с вашим форматом, затем печатается словарь с количеством вхождений.

Предполагается, что файл имеет правильно отформатированные строки, поэтому item.split(':')[2] существует. Я рекомендую посмотреть этот ответ для более безопасного разделения str -not-contain-the-pattern">Как надежно разбить строку в Python, если она может не содержать шаблон или все n элементов?

person Attersson    schedule 26.05.2020