Py学习  »  Python

在python中,中断内部循环并将控制传递给最外层的循环

Meana • 3 年前 • 1266 次点击  

下面是我在一个名为 adm2_地理名称 .然后我有一个csv文件 line[1] 需要在里面搜查 adm2_地理名称 .一旦被发现,我想打破循环 adm2_地理名称 i、 e.从 for dic in adm2_geonames: 把控制权交给 for line in csvReader: 对于下一个关键字,直到csv中的所有内容都被读取。 我对设置中断声明的范围感到困惑。我也尝试为每个内部循环放置多个break语句。似乎不是正确的方法。 请注意,我是一名python初学者,如果我的问题很中庸,请耐心等待。

coords = []
with open('ADM2_hits.csv') as csvFile:
    csvReader = csv.reader(csvFile)
    next(csvReader)
    for line in csvReader:
        keyword = line[1]
        for dic in adm2_geonames:
            for key in dic:
                if(key == "geonames"):
                    for x in dic[key]:
                        if(keyword == x['name']):
                            line.append(x['lat'])
                            line.append(x['lng'])
                            coords.append(line)
                            break
print(coords)
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/129272
 
1266 次点击  
文章 [ 2 ]  |  最新文章 3 年前
Samwise
Reply   •   1 楼
Samwise    3 年前

一种方法是使用 else: 块以捕获内部循环未中断的情况(在这种情况下,您希望 continue ),然后是 break 如果 else 还没有继续:

coords = []
with open('ADM2_hits.csv') as csvFile:
    csvReader = csv.reader(csvFile)
    next(csvReader)
    for line in csvReader:
        keyword = line[1]
        for dic in adm2_geonames:
            for x in dic["geonames"]:
                if(keyword == x['name']):
                    line.append(x['lat'])
                    line.append(x['lng'])
                    coords.append(line)
                    break
            else:
                continue
            break
print(coords)

请注意,只需直接转到 dic["geonames"] 而不是在整本字典上循环;字典的全部意义在于,你可以通过它的键直接跳转到一个给定的条目,而不必反复搜索整个条目。

chepner
Reply   •   2 楼
chepner    3 年前

首先,你不需要所有这些循环 地方,这意味着你不需要 break 完全

coords = []
with open('ADM2_hits.csv') as csvFile:
    csvReader = csv.reader(csvFile)
    next(csvReader)
    for line in csvReader:
        keyword = line[1]
        for dic in adm2_geonames:
            try:
                line.extend(dic['geonames']['name'][k] for k in ['lat', 'long'])
                coords.append(line)
            except KeyError:
                continue