【发布时间】:2019-10-16 16:31:14
【问题描述】:
我的技能列表如下:
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)])
这可以完成工作,但考虑到我有大约 50 万个技能组合,它的速度很慢。有没有更快的方法来做到这一点?理想情况下不使用 3 个循环。
谢谢
【问题讨论】:
-
这可能是 codereview.stackexchange.com 的一个很好的候选者