如何在字典中循环提取值?

2024-05-23 22:40:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在刮一页纸。我做了两个loops,但是第一个循环只取transcription_price值,而不是最后两个值。为什么以及如何解决这个问题

def start_requests(self):
    links = {'transcription_page': 'https://www.rev.com/freelancers/transcription',
             'captions_page': 'https://www.rev.com/freelancers/captions',
             'subtitles_page': 'https://www.rev.com/freelancers/subtitles'
            }
    call = [self.parse_transcription,self.parse_caption,self.parse_subtitles]

    for link in links.values():
        for n in range(0,3):
            return [scrapy.Request(link, callback=call[n])]

Tags: httpsselfcomforparsewwwpagelink
1条回答
网友
1楼 · 发布于 2024-05-23 22:40:17

因为return语句返回值并终止函数,将控制流传递给调用者。这样,内部循环在遍历所有值之前终止

也许你想要的是yield

>>> def f():
...  for x in (1, 2, 3):
...   yield x
...
>>> list(f())
[1, 2, 3]

此外,使用未命名常量是一种植入错误的方法,这种错误通常不那么明显,更不用说非Pythonic:

items = ["a", "b", "c"]

# will make an incomplete round when `items` is longer than 3 elements
def poor():
  for i in xrange(0, 3):
    yield items[i]

# will do just alright
def appropriate():
  for item in items:
    yield item

1除非您在try/except/finally块中,在这种情况下finally总是在return发生之前执行:

def return_one():
  try:
    1/0
  except ZeroDivisionError:
    return 0
  finally:
    return 1

相关问题 更多 >