2017-02-13 106 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