一旦遍历整个for循环,又在另一个for循环内,有没有一种方法可以指定程序执行某项功能? The for-statement

问题描述

此处是新手Python用户。我正在尝试一个程序,将使用dictReader从.csv文件接收的字典行与我自己的字典数据进行比较。我的程序将从csv文件中获取每一行,并将其与数据的每一列进行比较以找到匹配项。找到所有数据匹配的行后,它将打印出该行的键,即“名称”。

我的问题是,我找不到一种方法来告诉程序执行该操作。我在嵌套的for循环内的if语句中插入了一个中断,因此,如果某列不匹配,则它立即移至下一个“名称”行。如果我将print()指向嵌套的for循环的末尾,则它将多次打印该列,但是会多次匹配该列。如果所有列都匹配,我只想将名称打印一次...(例如,如果它到达for循环的末尾)

with open(f"databases/{argv[1]}","r") as dna_database:
    data = csv.DictReader(dna_database)
    for row in data:
        for column in dna:
            if dna[column] != int(row[column]):
                break
            print(row["name"])
    dna_database.close()

解决方法

使用else循环的for子句:

with open(f"databases/{argv[1]}","r") as dna_database:
    data = csv.DictReader(dna_database)
    for row in data:
        for column in dna:
            if dna[column] != int(row[column]):
                break
        else:
            print(row["name"])

else循环未提前退出(即“如果它到达for循环的末尾”)时,将触发for子句。

The for-statement

当项目用尽[..]时,将执行else子句中的套件(如果存在),并且循环终止。

,

您使用上下文管理器,因此无需调用close()

with open(f"databases/{argv[1]}","r") as dna_database:
    data = csv.DictReader(dna_database)
    for row in data:
        found = True
        for column in dna:
            if dna[column] != int(row[column]):
                found = False
                break
        if found:
            print(row["name"])
            break # stop: for row

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...