类似人员名单

2024-10-05 11:59:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一本字典,里面有许多相似的人。因此,从上述声明中,我希望David和charles作为一个相似的人列表返回,基于共同的兴趣(在本例中是数据挖掘),Ramesh和Suresh作为第二个相似的人列表返回(两个都是共同的遗传学)。如何做到这一点(没有函数的结果是好的)?你知道吗

dataset={
'David':['Artificial Intelligence','Machine learning', 'Neural networks', 'data mining'],
'Charles':['embedded computing','data mining','digital filters','signal processing','virtual reality','augmented reality'],
'Ramesh':['molecular biology','genetics','neuro surgery','oncology','ophthalmology'],
'Suresh':['genetics','neurology','ENT','bioinformatics','gene processing','radiology','pharmacology']
}

def commoninterest(personi,personj):
    similar_persons=[]

for interest in dataset[personi]:
    if interest in dataset[personj]:
        similar_persons.append(personi,personj)
return similar_persons

Tags: 列表datadatasetdavidsimilarprocessingminingreality
2条回答

就像Imre Piller说的,你想把兴趣储存在列表中。这里有一个可能的解决办法。另外,这个函数告诉你这对情侣有什么共同的兴趣,但是如果你想的话,你可以去掉它。你知道吗

dataset={
'David':set(['Artificial Intelligence','Machine learning', 'Neural networks', 'data mining']),
'Charles':set(['embedded computing','data mining','digital filters','signal processing','virtual reality','augmented reality']),
'Ramesh':set(['molecular biology','genetics','neuro surgery','oncology','ophthalmology']),
'Suresh':set(['genetics','neurology','ENT','bioinformatics','gene processing','radiology','pharmacology'])
}

def get_common_intrests(people):
    pairs = []
    p_list = list(people)
    for i, p1 in enumerate(p_list):
        for p2 in p_list[:i]:
            common_interests = people[p1].intersection(people[p2])
            if len(common_interests) > 0:
                pairs.append([p1, p2, common_interests])
    return pairs

print get_common_intrests(dataset)

结果(python 2):

[['Suresh', 'Ramesh', set(['genetics'])], ['David', 'Charles', set(['data mining'])]]

这个问题没有确切的定义。这个例子表明,一个共同的属性足以使两个人相似。在这种情况下,您应该创建尽可能多的主题列表。(也许,您可以消除空列表。)

我想让你做一个更复杂的衡量你应该定义一个衡量人与人之间的共同利益的数量为基础。在这种情况下,我建议使用兴趣集而不是列表,因为

  • 它保证了元素的独特性
  • 属性的顺序并不重要(正如我从示例中看到的那样)
  • 可以使用交集运算来计算公共属性,以及
  • 它使你的代码更快。你知道吗

相关问题 更多 >

    热门问题