我有60条记录,其中列有“技能列表”“(”技能列表“是技能列表)和”IdNo“。 我想知道有多少“IdNo”有共同的技能。
我怎么能在python中做到这一点。我不知道如何计算特定列表项。非常感谢任何帮助。
>>> a = open("C:\Users\abc\Desktop\Book2.csv")
>>> type(a1)
<type 'str'>
我打印a1时的一些文字
>>> a1
'IdNo, skillsList\n1,"u\'Training\', u\'E-Learning\', u\'PowerPoint\', u\'Teaching\', u\'Accounting\', u\'Team Management\', u\'Team Building\', u\'Microsoft Excel\', u\'Microsoft Office\', u\'Financial Accounting\', u\'Microsoft Word\', u\'Customer Service\'"\n2,"u\'Telecommunications\', u\'Data Center\', u\'ISO 27001\', u\'Management\', u\'BS25999\', u\'Technology\', u\'Information Technology...\', u\'Certified PMP\\xae\', u\'Certified BS25999 Lead...\'"\n3,"u\'Market Research\', u\'Segmentation\', u\'Marketing Strategy\', u\'Consumer Behavior\', u\'Experience Working with...\'"
由于
答案 0 :(得分:0)
你必须自己做。你可以使用技能词典,每个项目都是零。然后迭代您的记录并在看到时增加技能项目。
答案 1 :(得分:0)
struct = [{id: 1, skills: ['1', '2', '3']}, {...}]
for el in struct:
if '1' in el.get('skills'):
print 'id %s get this skill' % el.get('id')
答案 2 :(得分:0)
您可以建立倒置的技能指数。因此,您构建一个字典,每个键作为技能名称,键的值是一组IdNo
。这样你也可以找出哪些IdNo
有一些技能
代码看起来像
skills = {}
with open('filename.txt') as f:
for line in f.readlines():
items = [item.strip() for item in line.split(',')]
idNo = items[0]
skill_list = items[1:]
for skill in skill_list:
if skill in skills:
skills[skill].add(idNo)
else:
skills[skill] = set([idNo, ])
现在你有skills
字典,看起来像
skills = {
'Training': set(1,2,3),
'Powerpoint': set(1,3,4),
'E-learning': set(9,10,11),
.....,
.....,
}
现在你看到1,3,4有Powerpoint
作为一种技能,如果你想知道idNo
同时拥有'训练'和'Powerpoint'技能,你可以做到
skills['Powerpoint'].intersection(skills['Training'])
如果你想知道idNo
谁拥有'训练'或'Powerpoint'技能你可以做
skills['Powerpoint'].union(skills['Training'])