Как посчитать совпадения значений из текстового файла - PullRequest
1 голос
/ 19 октября 2019

Вот моя проблема: каждый сотрудник уникально идентифицируется по идентификатору (например, KCUTD_41). Я уже создал словарь из файла, чтобы собрать каждую компанию с идентификатором сотрудника, и это выглядит так:

{    'Company 1' :['KCUTD_41',
                   'KCTYU_48',
                   'VTSYC_48',
                      ......]
     'Company 2' :['PORUH_21',
                   'PUSHB_10',
                    ....... ]
     'Company 3' :['STEYRU_69']}

Всего у меня несколько компаний.

Параллельно в другом файле у меня есть несколько строк, где каждая строка соответствует группе сотрудничества между компаниями с несколькими сотрудниками и докторантами (d215485 и т. Д. .....)

Файл выглядит следующим образом:

PORUH_21 d215487 d215489 d213654 KCTYU_48 d154225 ...
d25548 d89852 VTSYC_48 d254548 d121154 d258774 PUSHB_10 ...
etc ....

То, что я хочу, это количество сотрудников и количество групп (строка, где оно появляется), чтобы получить что-то подобное

РЕЗУЛЬТАТ:

Company 1 : (number of employees from company 1 per line ) : number of groups or line where it appears in total 
Company 2 : (number of employees per line from company2) : nb of groups or line where the employees from company2 appears in total
Company 3 : ......

Я хотел использовать условие, чтобы увидеть, совпадают ли значения для каждого ключа из моего словаря, и если да, подсчитать количество вхождений

Я надеюсь, что сейчас лучше^^ '

Если вы можете мне помочь ^^

1 Ответ

0 голосов
/ 19 октября 2019

Мне не совсем понятно, как вы хотите, чтобы вывод выглядел, но этот код может помочь вам добраться туда, куда вы хотите пойти ...

import re

companies = {
    'Company 1' :['KCUTD_41','KCTYU_48','VTSYC_48'],
    'Company 2' :['PORUH_21','PUSHB_10'],
    'Company 3' :['STEYRU_69']
     }

finalout = {}
for k,v in companies.items():
    finalout[k] = {"number_in_company":len(v)}
print (finalout)

lines_from_file = [
    "PORUH_21 d215487 d215489 d213654 KCTYU_48 d154225", 
    "d25548 d89852 VTSYC_48 d254548 d121154 d258774 PUSHB_10"
]


pattern_groups    = "(d\d+)"
pattern_employees = "([A-Z]_\d+)"
for line in lines_from_file:
    print("---------------------")
    print(line)
    print("Groups per line:", re.subn(pattern_groups, '', line)[1])
    print("Employees per line:", re.subn(pattern_employees, '', line)[1])

ВЫХОД:

{'Company 1': {'number_in_company': 3}, 'Company 2': {'number_in_company': 2}, 'Company 3': {'number_in_company': 1}}
---------------------
PORUH_21 d215487 d215489 d213654 KCTYU_48 d154225
Groups per line: 4
Employees per line: 2
---------------------
d25548 d89852 VTSYC_48 d254548 d121154 d258774 PUSHB_10
Groups per line: 5
Employees per line: 2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...