Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 循环此代码的最佳方法是什么?_Performance_Loops_Python 2.7_While Loop - Fatal编程技术网

Performance 循环此代码的最佳方法是什么?

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

股票是一句格言:

我试图检查投资组合的状态,即股票[0][1]、股票[1][1]和股票[2][1],并创建一个仅包含活动投资组合的元素列表

而且,我正在使用一个计数器来进行迭代,这似乎是一个非常缓慢的过程。循环此代码最有效的方法是什么

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']