为迭代器组合以避免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
行-是的