首页 > 解决方案 > 如何停止循环中相同元素的重复

问题描述

我的循环for在python中有问题。

我重复了相同的元素,我不知道为什么。

这是我的代码:

x=0
liste=[]
for x in range(len(valeur)):
    for i in range(x+1,len(valeur)):
        ed = nltk.edit_distance(valeur[x],valeur[i])
        dico={"titre":valeur[x],"titre_compare":valeur[i], "distance":ed}
        a=((dico["titre"],(dico["titre_compare"]),(dico["distance"])))

        for z in range (len(a)):
            if a[2]<6 and a[0] != ' None ' and a[1] != ' None ' and a[2] != ' None ' :

                print(a)

我的代码运行良好,但我不明白为什么会这样:

(' K. Hardono ', ' Cardon. ', 5)
(' K. Hardono ', ' Cardon. ', 5)
(' K. Hardono ', ' Cardon. ', 5)

不仅如此:

(' K. Hardono ', ' Cardon. ', 5)

我试图搜索并发现它:

当我把这个例如:

a=((dico["titre"],"&&",(dico["titre_compare"]),"&&",(dico["distance"])))

它返回 5 次

(' K. Hardono ', ' Cardon. ', 5)
(' K. Hardono ', ' Cardon. ', 5)
(' K. Hardono ', ' Cardon. ', 5)
(' K. Hardono ', ' Cardon. ', 5)
(' K. Hardono ', ' Cardon. ', 5)

所以我知道我对相同元素的重复提供了我在 python 中字典的数字元素,但我不知道我如何才能只有 1 个元素而不是重复。

谢谢如果你能帮助我

标签: pythonloops

解决方案


好吧,看起来a你正在制作的元组的长度为 3,对吧?

因此,当您使用 进行下一个 for 循环时zz将在循环期间采用 [0, 1, 2] 的值。该循环每次都执行相同的操作(不依赖于z),因此它将打印a3 次。

再看看你的循环,z想想你想做什么。此外,在您定义元组a的地方,括号有点不合时宜......


推荐阅读