嵌套for循环在外部循环第一次迭代后不运行



我有一个程序,它将股票报价机和部门列表加载到一个名为etfStocks的列表中。它看起来像这样:

etfStocks = [('AAPL', 'Technology'), ('FB', 'Technology'), ('SPG', 'Real Estate'), ...]

然后我有另一个列表,其中我将每个扇区加载到名为sectorList的列表中。它看起来像这样:

sectorList = ('Technology', 'Real Estate', 'Industrials', ...)

我尝试遍历sectorList列表,并将给定扇区的每个报价器加载到它们自己的列表中,然后对其执行分析。下面的脚本在第一次执行时运行良好,但是当循环进入第二个扇区时,它永远不会重建sectorStock列表。我试过在下面的代码和嵌套for循环之间切换,但似乎都不起作用。

有没有人知道为什么它不会在嵌套循环中重复迭代?

sectorStocks = []
for sector in sectorList:
    sectorStocks.clear()
    sectorStocks = [i[0] for i in etfStocks if i[1] == sector]
    print("Computing statistics for: %s" % sector)

这里似乎行得通。

也许你想要一个groupBy ?

from itertools import groupby
from operator import itemgetter
etfStocks = [('AAPL', 'Technology'), ('FB', 'Technology'), ('SPG', 'Real Estate')]
sectorList = ('Technology', 'Real Estate', 'Industrials')
stocks_by_sector = {k:list(v) for k,v in groupby(etfStocks, itemgetter(1))}
for sector, stocks in stocks_by_sector.items():
  print(sector, stocks)
https://repl.it/E10r/1

最新更新