【问题标题】:Combine for iterators to avoid duplicates in python结合迭代器以避免python中的重复
【发布时间】:2021-01-22 10:49:47
【问题描述】:

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

这是我的代码:

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])    

【问题讨论】:

  • 不确定您的意思,您是否只需要在第一个 for 循环之前分配一个布尔值,如果输入 if 语句(然后停止第二个 for 循环运行),则该值变为 false?
  • 我希望第二个循环只有在第一个循环中的if value in line : 没有找到值时才会发生

标签: python for-loop duplicates


【解决方案1】:

您只需要添加一个布尔值来确定第一次迭代的方式

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])  

正如 cmets 中所指出的,如果您没有在第一个 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 else 怎么样:o
  • 这对于for else 来说是一个完美的情况:而不是found_value 标志你只是break 然后else 子句不会进行第二次迭代
  • @RobinDeSchepper - 很好,你可以,但考虑到操作问题中的奇怪缩进,我不想限制break的使用
  • 我使用breakelse时也可以删除found_value = False这一行?
  • @marou95thebest - 是的
猜你喜欢
  • 2021-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-14
  • 1970-01-01
  • 1970-01-01
  • 2021-10-06
相关资源
最近更新 更多