如何解决一旦遍历整个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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。