我在列表中列出了人名,名称是唯一的,但有时名字可能出现在姓后,反之亦然。
list[0]="Albert Einstein" and list[5]="Einstein Albert"
但最后我希望每个名字都有一个唯一的条目
我尝试编辑dist但返回的值可能会在很宽的范围内变化,因此无用
请在python中建议好的字符串匹配模块
答案 0 :(得分:2)
另一种方法也不能保证如果没有重复,名称部分的顺序将被保留:
>>> name_list = ["Albert Einstein", "Einstein Albert", "Abe Lincoln", "Lincoln Abe"]
>>> list(set(' '.join(sorted(n.split())) for n in name_list))
['Abe Lincoln', 'Albert Einstein']
n
,请将其拆分(n.split()
),对部分(sorted(n.split())
)进行排序并重新加入(' '.join(sorted(n.split()))
)。重复项现在具有相同的表示set
以删除重复项set
转换回列表(虽然这可能不是必需的)。答案 1 :(得分:1)
>>> x = ["Albert Einstein", "test 1 s 2", "Einstein Albert", "foo bar baz", "baz foo bar"]
>>> list(set(' '.join(sorted(s.split())) for s in x))
['bar baz foo', '1 2 s test', 'Albert Einstein']