python字典操作不起作用

python字典操作不起作用,python,sorting,dictionary,Python,Sorting,Dictionary,我正在做数据处理,以过滤和排序等 for stock in context.timeSeriesData: try: if context.timeSeriesData.iloc[1,:][stock][2] > 0 and context.timeSeriesData.iloc[0,:][stock][2] > 0: if context.timeSeriesData.iloc[1,:][stock][2] > context.

我正在做数据处理,以过滤和排序等

for stock in context.timeSeriesData:
    try:
        if context.timeSeriesData.iloc[1,:][stock][2] > 0 and context.timeSeriesData.iloc[0,:][stock][2] > 0:
            if context.timeSeriesData.iloc[1,:][stock][2] > context.timeSeriesData.iloc[0,:][stock][2]:
                context.tradingList[stock] = []       
                increment = context.timeSeriesData.iloc[1,:][stock][2] / context.timeSeriesData.iloc[0,:][stock][2]
                context.tradingList[stock].append(increment)            
    except:
        pass      

try:
    sorted_tradingList = sorted(context.tradingList.items(), key = lambda x: x[1], reverse = True)
except:
    pass



try:
    sorted_tradingList.clear()
except:
    pass



for x,stock in sorted_tradingList:
    if len(context.tradingBook) < (1.25/context.weightLong):
        if stock in data and 'price' in data[stock]:
            context.tradingBook[stock] = [] 
            context.tradingBook[stock].append(0.0)
            order_target_percent(stock, context.weightLong) 




for k, v in context.tradingBook.iteritems():
    v[0] +=1

timeToSell = {k:v for (k,v) in context.tradingBook.iteritems() if v[0] == 10}

for stock in timeToSell:
    if stock in data and 'price' in data[stock]:
        TargetHedge = (len(context.tradingBook) - 1) * context.weightShort
        order_target_percent(stock, 0.0) 
        del context.tradingBook[stock]

if len(timeToSell)>0:
    timeToSell.clear()

TargetHedge = (len(context.tradingBook)) * context.weightShort
order_target_percent(sid(8554), TargetHedge) 
在上面的数据中,第一行表示前一天收到的数据,第二行表示刚刚到达的数据。因此,在将来,如果DataFrame:更改为,如下所示。计算机应该把它放到上下文中去

DataFrame:
          Equity(24 [AAPL])         
1  [311.0, 18024000000.0, 3.08] 
2  [311.0, 19033000000.0, 3.79]  
因此,其目的是,当收到新数据且每股收益提高时,它将被存储到context.tradingList中。然后它以最高的“增量”短路

然后是代码

for k, v in context.tradingBook.iteritems():
    v[0] +=1
将在每次处理整个代码块时添加一天(每天一次)。如您所见,它从0天开始,context.tradingBook[stock].append(0.0),但每天都会增加一天,直到10天过去,在这一点上,我将尝试出售它们

order_target_percent(stock,context.weightLong)是买卖股票的代码,这是我的系统所独有的,所以不用担心。我的问题是。。。为什么不增加天数。我对你有意见

for k, v in context.tradingBook.iteritems():
    v[0] +=1
目前没有增加天数。我做错了什么。另外,我还有一个问题,如果你有兴趣关注这一点的话。但一旦我们迈出第一步,我会让你知道的。非常感谢你

问题出在

try:
    sorted_tradingList.clear()
except:
    pass
它不起作用,我也不知道

问题出在

try:
    sorted_tradingList.clear()
except:
    pass

它不起作用,我也不知道

你的“裸体例外”不是一个好主意,你应该捕捉特定的错误,或者至少打印/记录我知道的任何执行。但当我运行调试模式时,没有任何东西出现故障。@根据定义,UjaeKang异常是不正常发生的事情。如果要将dict中的值更改为空集,请使用
your_dict[key]=set()
,一旦没有对对象的任何其他引用,在python
my_where=where
中重新绑定名称时,旧数据将被gc'd。不确定您的意思是dict还是set as
{}
将创建一个字典,在创建一个空集合时无论如何都需要
set()
,因为您不处理异常,所以最好不要捕获它们。例如,第二个
try
-
catch
如果被捕获,您最终将无法定义
排序\u tradingList
,这意味着后续代码无论如何都无法成功。您的简单操作不是一个好主意,您应该捕获特定错误,或者至少打印/记录我知道的任何执行。但当我运行调试模式时,没有任何东西出现故障。@根据定义,UjaeKang异常是不正常发生的事情。如果要将dict中的值更改为空集,请使用
your_dict[key]=set()
,一旦没有对对象的任何其他引用,在python
my_where=where
中重新绑定名称时,旧数据将被gc'd。不确定您的意思是dict还是set as
{}
将创建一个字典,在创建一个空集合时无论如何都需要
set()
,因为您不处理异常,所以最好不要捕获它们。例如,第二个
try
-
catch
如果被捕获,您将没有定义
已排序的交易列表,这意味着后续代码无论如何都无法成功。课程:删除所有除
外的裸
课程:删除除
外的所有裸
外的裸

try:
    sorted_tradingList.clear()
except:
    pass