2017-02-13 110 views
1

我正在尝试创建将成为基金组合的订单请求的字典。字典将作为JSON文件导出,只是为了给出一些上下文。这是字典的样子。基于条件创建Python字典

{ 
"accountID":"02e57c7d-d071-4c63-b491-1194a9939ea5.1452548617456", 
"accountNo":"DWTE000005", 
"userID":"02e57c7d-d071-4c63-b491-1194a9939ea5", 
"accountType":2, 
"ordType":"1", 
"side":"B", 
"instrumentID":"06926627-e950-48f3-9c53-b679f61120ec", 
"orderQty":1.4312, 
"comment":"" 
} 

如果目标权重大于0,将创建字典的条件如下。

targetportfolio = { 
'VXUS' : 0.2, 
'GOVT' : 0, 
'IVW' : 0.2, 
'EEM' : 0.2, 
'JNK' : 0, 
'VDE' : 0.15, 
'LQD' : 0, 
'IJR' : 0.1, 
'BIL' : 0, 
'AAXJ' : 0.15 
} 

其中每个基金(例如VXUS)将有如果目标组合字典量大于0。我在想沿着下面的代码线的东西产生更大的订单,但我很困惑。有任何想法吗?

def ordergen(portfolio): 
    for i in portfolio: 
    { 
    "accountID" : "02e57c7d-d071-4c63-b491-1194a9939ea5.1452548617456", 
    "accountNo" : "DWTE000005", 
    "userID" : "02e57c7d-d071-4c63-b491-1194a9939ea5", 
    "accountType" : 2, 
    "ordType" : "1", 
    "side" : "B", 
    "instrumentID" :fundID[i], 
    "orderQty" : , 
    "comment":"" 
    } 

回答

0
targetPortfolio = { 
'VXUS' : 0.2, 
'GOVT' : 0, 
'IVW' : 0.2, 
'EEM' : 0.2, 
'JNK' : 0, 
'VDE' : 0.15, 
'LQD' : 0, 
'IJR' : 0.1, 
'BIL' : 0, 
'AAXJ' : 0.15 
} 

orders = [] 

for k in targetPortfolio.keys(): 
    if targetPortfolio[k] > 0: 
     orders.append({ 
      "accountID" : "02e57c7d-d071-4c63-b491-1194a9939ea5.1452548617456", 
      "accountNo" : "DWTE000005", 
      "userID" : "02e57c7d-d071-4c63-b491-1194a9939ea5", 
      "accountType" : 2, 
      "ordType" : "1", 
      "side" : "B", 
      "instrumentID" : "", 
      "orderQty" : "", 
      "comment":"" 
     }) 

print(orders) 

.keys()是你的朋友。您现在可以使用'k'在其重量大于0的情况下填写您的订单详情。

+0

太棒了,非常感谢。我还从其他脚本导入其他字典,我认为只需在orders.append后使用sample [k]字典即可。 –

+0

选中它作为正确的答案。我需要我的互联网点! – Patrick