Как я могу остановить повторение одного и того же элемента в цикле - PullRequest
0 голосов
/ 22 марта 2020

У меня есть проблема в python с моим l oop для.

У меня есть повторение того же элемента, и я не знаю почему.

Вот это мой код:

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)

I попытался найти, и я обнаружил это:

Когда я ставлю это, например:

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 элемент, а не повторение.

Спасибо, если вы можете помочь мне

1 Ответ

1 голос
/ 22 марта 2020

Ну, похоже, что кортеж a, который вы делаете, имеет длину 3, верно?

Так что, когда вы делаете следующий для l oop с z, z примет значения [0, 1, 2] в течение l oop. L oop каждый раз делает одно и то же (без зависимости от z), поэтому он напечатает a 3 раза.

Снова посмотрите на ваш l oop с z и подумайте о что ты пытаешься сделать. Кроме того, где вы определяете свой кортеж a, скобки немного не в порядке ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...