处理python列表中的模糊重复项

处理python列表中的模糊重复项,python,list,filter,duplicates,fuzzy-search,Python,List,Filter,Duplicates,Fuzzy Search,假设我有一个Person对象列表: class Person: def __init__(self, name, items): self.name = name self.items = items 我想用以下方法删除重复项。如果这两个人的名字足够相似,根据该函数的评估: def have_similar_names(person1, person2): ... (假设此函数已编码,并使用FuzzyFuzzy包的编辑距离;例如,对于参数“Tomas”和“Tomá

假设我有一个Person对象列表:

class Person:
  def __init__(self, name, items):
    self.name = name
    self.items = items
我想用以下方法删除重复项。如果这两个人的名字足够相似,根据该函数的评估:

def have_similar_names(person1, person2):
    ...
(假设此函数已编码,并使用FuzzyFuzzy包的编辑距离;例如,对于参数
“Tomas”
“Tomás”
,它将返回True;对于
“Catherine”
“Cathleen”
,它将返回False),然后使用以下命令组合这两个人:

def combine_persons(person1, person2):
    return Person(max([person1.name, person2.name], key=len), person1.items+person2.items)
我的问题是如何创建一个函数,该函数将接受输入中具有模糊副本的列表,并输出一个组合人员列表


我可以用循环来实现,但我想知道是否有更有效的方法来实现这一点?

发布一组“相似”的人,这听起来不是个好主意,除非
有相似的名字
是可传递的(这不太可能)。我想你的第一步是定义模糊相似性是什么。你的相似性度量是什么?海明距离?编辑距离?或者某种伪unicode距离?了解模糊匹配是如何进行的可能很有用,因为为了避免破坏性能,任何解决方案都必须依赖于匹配算法的某些属性。你提到这是一个虚拟的例子,我希望你能分享至少一部分真实的东西。@Undead精彩(和可爱),我来看看。它似乎使用了几个不同的库,幸运的是,我也能了解所有这些库;)