У меня есть следующий список навыков:
skills = ['Listening', 'Written_Expression','Clerical',
'Night_Vision', 'Accounting']
У меня есть отдельный список наборов, каждый из которых содержит навыки, связанные с определенной работой:
job_skills =
[{'Listening','Written_Expression','Clerical','Night_Vision'},
{'Chemistry','Written_Expression','Clerical','Listening'},
.
.
]
Я хочу посчитать частоту, с которой каждая комбинация из 2 уникальных навыков является подмножеством набора в job_skills, и вернуть список списков / наборов с комбинациями и частотами следующим образом:
skill_pairs = [{'Listening', 'Written_Expression', 2},
{'Listening', 'Clerical', 2},
.
.
{'Night_Vision', 'Accounting', 0}]
В данный моментЯ делаю следующее:
skill_combos = []
for idx, i in enumerate(skills):
for jdx, j in enumerate(skills[idx+1:]):
temp = []
for job in range(len(job_skills)):
temp.append(set([i,j]).issubset(job_skills[job])
skill_combos.append([i,j,sum(temp)])
Это делает работу, но она медленная, учитывая, что у меня около полумиллиона комбинаций навыков. Есть ли более быстрый способ сделать это? В идеале не использовать 3 цикла.
Спасибо