在外部循环的第一次迭代之后,Nest for循环不运行

时间:2016-11-17 18:43:40

标签: python loops nested

我有一个程序,将一系列股票行情和行业加载到名为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)

1 个答案:

答案 0 :(得分:1)

似乎在这里工作。

也许你想要一个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