Performance 循环此代码的最佳方法是什么?
股票是一句格言: 我试图检查投资组合的状态,即股票[0][1]、股票[1][1]和股票[2][1],并创建一个仅包含活动投资组合的元素列表 而且,我正在使用一个计数器来进行迭代,这似乎是一个非常缓慢的过程。循环此代码最有效的方法是什么Performance 循环此代码的最佳方法是什么?,performance,loops,python-2.7,while-loop,Performance,Loops,Python 2.7,While Loop,股票是一句格言: 我试图检查投资组合的状态,即股票[0][1]、股票[1][1]和股票[2][1],并创建一个仅包含活动投资组合的元素列表 而且,我正在使用一个计数器来进行迭代,这似乎是一个非常缓慢的过程。循环此代码最有效的方法是什么 a = 0 test = {} while a <= 500: try: if stocks[a][1] == 'Active': test[a] = stocks[a][0] prin
a = 0
test = {}
while a <= 500:
try:
if stocks[a][1] == 'Active':
test[a] = stocks[a][0]
print test[a]
a +=1
else:
pass
a +=1
except KeyError:
break
test = list(test.values())
test = str(','.join(test)).split(',')
a=0
测试={}
虽然您可以尝试的一件事是不使用计数器,而是迭代字典值本身,只返回那些状态为活动的投资组合。当您发现自己需要检查特定数据结构中的所有项时,通常最简单的方法是在结构本身上迭代,而不是使用计数器(即对iterable中的项说,而不是对范围内的x说(len(iterable)):iterable[x]
):
此原因中的actives
是使用循环遍历stocks
字典的值并仅返回x[1]
中的值(在您的情况下,状态)等于Active
您可以尝试的一件事是不使用计数器,而是迭代字典值本身,只返回那些状态为Active
的投资组合。当您发现自己需要检查特定数据结构中的所有项时,通常最简单的方法是在结构本身上迭代,而不是使用计数器(即对iterable中的项说,而不是对范围内的x说(len(iterable)):iterable[x]
):
此原因中的actives
是使用迭代stocks
字典的值并仅返回x[1]
(在您的情况下,状态)等于Active
的值生成的
a = 0
test = {}
while a <= 500:
try:
if stocks[a][1] == 'Active':
test[a] = stocks[a][0]
print test[a]
a +=1
else:
pass
a +=1
except KeyError:
break
test = list(test.values())
test = str(','.join(test)).split(',')
In [1]: stocks = {
...: 0: [u'portfolio1', u'Active'],
...: 1: [u'portfolio2', u'Active'],
...: 2: [u'portfolio3', u'Inactive']
...: }
In [2]: actives = [x[0] for x in stocks.itervalues() if x[1] == 'Active']
In [3]: actives
Out[3]: [u'portfolio1', u'portfolio2']