合并迭代器以避免python中的重复项

问题描述

我有2个for循环运行良好。问题是我想将它们组合起来以避免在我的data2数据帧中添加重复项。换句话说,我希望for value in Dic["synonyms.0"].values:循环仅在之前的value in line :迭代中没有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,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,dosage])  

如注释中所指出,如果您在第一个for循环中未使用break,则可以替换布尔值

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