Python 从元组列表中删除字符串
我需要从元组列表中删除语义相似性字符串 以下是我的意见:Python 从元组列表中删除字符串,python,python-3.x,Python,Python 3.x,我需要从元组列表中删除语义相似性字符串 以下是我的意见: [(327, 328, 'Apache'), (327, 329, 'Apache Kafka'), (328, 329, 'Kafka')] 预期产出: [(327, 329, 'Apache Kafka')] 达到效果的最佳方法是什么?最简单的方法,但可能不是最佳方法 data = [(327, 328, 'Apache'), (327, 329, 'Apache Kafka'), (328, 329, 'Kafka')] res
[(327, 328, 'Apache'), (327, 329, 'Apache Kafka'), (328, 329, 'Kafka')]
预期产出:
[(327, 329, 'Apache Kafka')]
达到效果的最佳方法是什么?最简单的方法,但可能不是最佳方法
data = [(327, 328, 'Apache'), (327, 329, 'Apache Kafka'), (328, 329, 'Kafka')]
result = []
print(data)
for item1 in data:
hasSimilar = False
for item2 in data:
if item2==item1:
continue
if item1[2] in item2[2]:
hasSimilar = True
break
if not hasSimilar:
result.append(item1)
print(result)
输出:
[(327, 328, 'Apache'), (327, 329, 'Apache Kafka'), (328, 329, 'Kafka')]
[(327, 329, 'Apache Kafka')]
这是我的方法。如果有更好的处理方法,请告诉我
data = [(327, 328, 'Apache'), (327, 329, 'Apache Kafka'), (328, 329, 'Kafka')]
uniques = [ i for i in data if not any(i[2].lower() in x[2].lower() and i[2].lower() != x[2].lower() for x in data)]
print(uniques)
回答得很好。谢谢你的密码。请查看我的方法,并让我知道这是否是最佳方法。thotam,我不知道您的方法是否最佳,但它比我的好:)确实需要列表(set())?您是对的,列表(set())不是必需的。更新了代码。你能介绍一下它是如何工作的,这样不熟悉代码的人就可以跟着做了吗?
data = [(327, 328, 'Apache'), (327, 329, 'Apache Kafka'), (328, 329, 'Kafka')]
result = []
for i in data:
for x in data:
if i[2] in x[2]:
if i == x:
break
result.append(x)
print(result)