为迭代器组合以避免python中的重复

为迭代器组合以避免python中的重复,python,for-loop,duplicates,Python,For Loop,Duplicates,我有两个for循环运行良好。问题是我想将它们组合起来,以避免在我的data2dataframe中追加重复项。换句话说,我希望Dic[“synonyms.0”]中的值。值:循环仅在行中没有值时发生:来自前面的for迭代 这是我的密码: for value in Dic["label"].values: if (value != None) : if value in line :

我有两个
for
循环运行良好。问题是我想将它们组合起来,以避免在我的
data2
dataframe中追加重复项。换句话说,我希望Dic[“synonyms.0”]中的
值。值:
循环仅在行中没有
值时发生:
来自前面的
for
迭代

这是我的密码:

for value in Dic["label"].values:
                if (value != None) :
                    if value in line :
                        data2.append([value, line.count(value), len(value),dosage])
for value in Dic["synonyms.0"].values:
                if (value != None) :
                    if value in line :
                        data2.append([value, line.count(value), len(value),dosage])    

您只需要添加一个布尔值来确定第一次迭代是如何进行的

found_value = False
for value in Dic["label"].values:
    if (value != None) :
        if value in line :
            data2.append([value, line.count(value), len(value),dosage])
            found_value = True
if not found_value:
    for value in Dic["synonyms.0"].values:
        if (value != None) :
            if value in line :
                data2.append([value, line.count(value), len(value),dosage])  
正如注释中指出的,如果您在第一个for循环中没有使用
break
,那么这可以替换布尔值

for value in Dic["label"].values:
    if (value != None) :
        if value in line :
            data2.append([value, line.count(value), len(value),dosage])
            break
else:
    for value in Dic["synonyms.0"].values:
        if (value != None) :
            if value in line :
                data2.append([value, line.count(value), len(value),dosage]) 

不确定您的意思,是否只需要在第一个for循环之前指定一个布尔值,如果输入if语句,该值将变为false(然后停止第二个for循环的运行)?我希望第二个循环只在
中没有找到值时发生,如果行中的值:
在第一个循环中,那么
for else
如何呢?不过:对于
for else
,这是一个完美的情况:您只需
break
而不是
found\u value
标志,然后
else
子句就不会执行第二个循环了iteration@RobinDeSchepper-说得好,你可以,但鉴于op问题中的奇怪缩进,我不想限制
break
的使用,我也可以在使用
break
else
时删除
found\u value=False
行-是的