社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

Meana • 4 年前 • 1637 次点击  

下面是我在一个名为 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
文章 [ 2 ]  |  最新文章 4 年前
Samwise
Reply   •   1 楼
Samwise    4 年前

一种方法是使用 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    4 年前

首先,你不需要所有这些循环 地方,这意味着你不需要 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