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