【发布时间】:2018-08-13 13:27:15
【问题描述】:
嘿,伙计们,我的 dict phistory 每次调用这个函数时都会自己覆盖它,我希望它会向 dict 添加一个新条目。
def pHistory(): #Creates/loads a Dict of historical prices then saves it after the update phase 2
global phistory
global dataentries
phistory = {}
dataentries = 0
print phistory
print dataentries
def loaddata():
global dataentriesa
with open('StockDb.FUMatt','r') as y:
vhistory = y.read()
print vhistory
phistory = vhistory
print phistory
with open('count.FUMatt','r') as ya:
strdataa = ya.read()
print strdataa
dataentriesa = int(strdataa)
print dataentriesa
def save(): #function to save database to file
with open('StockDb.FUMatt','w') as z:
savith = json.dumps(phistory)
z.write(savith)
print savith
with open('count.FUMatt','w') as j:
strdata = str(dataentries)
j.write(strdata)
print strdata
loaddata()
dataentries = dataentriesa
a = stockdf.keys()
print dataentries
print phistory
for b in a:
name = stockdf[b]['name']
price = stockdf[b]['price']
time = stockdf[b]['time']
historyupdate = { b: {dataentries: {time:price}}}
phistory.update(historyupdate)
c = phistory.keys()
#print c
dataentries = dataentries + 1
save()
当此代码运行时,日志条目的计数工作正常,但是当数据条目 2 添加到字典时,数据条目 1 中的所有信息都会被覆盖。我忽略了什么吗?
json格式是
{
"EVL": {
"35": {
"2018-08-13 14:00:01": "440.716"
}
},
"TCHS": {
"35": {
"2018-08-13 14:00:01": "994.678"
}
},
"FHG": {
"35": {
"2018-08-13 14:00:01": "404.863"
}
},
"WLT": {
"35": {
"2018-08-13 14:00:01": "988.793"
}
},
"BAG": {
"35": {
"2018-08-13 14:00:01": "2346.422"
}
},
"MSG": {
"35": {
"2018-08-13 14:00:01": "305.658"
}
},
"TMI": {
"35": {
"2018-08-13 14:00:01": "1021.110"
}
},
"TGP": {
"35": {
"2018-08-13 14:00:01": "195.230"
}
},
"IOU": {
"35": {
"2018-08-13 14:00:01": "535.950"
}
},
"LSC": {
"35": {
"2018-08-13 14:00:01": "989.317"
}
},
"TSBC": {
"35": {
"2018-08-13 14:00:01": "496.127"
}
},
"PRN": {
"35": {
"2018-08-13 14:00:01": "851.644"
}
},
"TCP": {
"35": {
"2018-08-13 14:00:01": "242.966"
}
},
"TCM": {
"35": {
"2018-08-13 14:00:01": "553.274"
}
},
"WSSB": {
"35": {
"2018-08-13 14:00:01": "65.845"
}
},
"IIL": {
"35": {
"2018-08-13 14:00:01": "85.831"
}
},
"TCB": {
"35": {
"2018-08-13 14:00:01": "428.470"
}
},
"TCC": {
"35": {
"2018-08-13 14:00:01": "550.622"
}
},
"EWM": {
"35": {
"2018-08-13 14:00:01": "871.508"
}
},
"YAZ": {
"35": {
"2018-08-13 14:00:01": "51.068"
}
},
"TCSE": {
"35": {
"2018-08-13 14:00:01": "19067.656"
}
},
"CNC": {
"35": {
"2018-08-13 14:00:01": "642.367"
}
},
"GRN": {
"35": {
"2018-08-13 14:00:01": "267.374"
}
},
"SLAG": {
"35": {
"2018-08-13 14:00:01": "234.068"
}
},
"HRG": {
"35": {
"2018-08-13 14:00:01": "426.689"
}
},
"ISTC": {
"35": {
"2018-08-13 14:00:01": "1010.354"
}
},
"SYM": {
"35": {
"2018-08-13 14:00:01": "1184.627"
}
},
"SYS": {
"35": {
"2018-08-13 14:00:01": "660.124"
}
},
"ELBT": {
"35": {
"2018-08-13 14:00:01": "125.758"
}
},
"MCS": {
"35": {
"2018-08-13 14:00:01": "1720.868"
}
},
"TCT": {
"35": {
"2018-08-13 14:00:01": "375.333"
}
}
} {
"EVL": {
"36": {
"2018-08-13 14:15:01": "440.425"
}
},
"TCHS": {
"36": {
"2018-08-13 14:15:01": "994.438"
}
},
"FHG": {
"36": {
"2018-08-13 14:15:01": "404.876"
}
},
"WLT": {
"36": {
"2018-08-13 14:15:01": "988.940"
}
},
"BAG": {
"36": {
"2018-08-13 14:15:01": "2348.502"
}
},
"TCT": {
"36": {
"2018-08-13 14:15:01": "375.416"
}
},
"MSG": {
"36": {
"2018-08-13 14:15:01": "305.709"
}
},
"TMI": {
"36": {
"2018-08-13 14:15:01": "1021.672"
}
},
"TGP": {
"36": {
"2018-08-13 14:15:01": "195.230"
}
},
"LSC": {
"36": {
"2018-08-13 14:15:01": "989.401"
}
},
"TSBC": {
"36": {
"2018-08-13 14:15:01": "496.085"
}
},
"PRN": {
"36": {
"2018-08-13 14:15:01": "851.735"
}
},
"TCP": {
"36": {
"2018-08-13 14:15:01": "242.994"
}
},
"TCM": {
"36": {
"2018-08-13 14:15:01": "552.139"
}
},
"WSSB": {
"36": {
"2018-08-13 14:15:01": "65.845"
}
},
"IIL": {
"36": {
"2018-08-13 14:15:01": "85.833"
}
},
"TCB": {
"36": {
"2018-08-13 14:15:01": "428.538"
}
},
"TCC": {
"36": {
"2018-08-13 14:15:01": "550.983"
}
},
"EWM": {
"36": {
"2018-08-13 14:15:01": "871.608"
}
},
"YAZ": {
"36": {
"2018-08-13 14:15:01": "51.065"
}
},
"TCSE": {
"36": {
"2018-08-13 14:15:01": "19069.714"
}
},
"CNC": {
"36": {
"2018-08-13 14:15:01": "642.603"
}
},
"GRN": {
"36": {
"2018-08-13 14:15:01": "267.333"
}
},
"SLAG": {
"36": {
"2018-08-13 14:15:01": "233.866"
}
},
"HRG": {
"36": {
"2018-08-13 14:15:01": "426.800"
}
},
"ISTC": {
"36": {
"2018-08-13 14:15:01": "1010.045"
}
},
"SYM": {
"36": {
"2018-08-13 14:15:01": "1184.777"
}
},
"SYS": {
"36": {
"2018-08-13 14:15:01": "660.208"
}
},
"ELBT": {
"36": {
"2018-08-13 14:15:01": "125.717"
}
},
"MCS": {
"36": {
"2018-08-13 14:15:01": "1721.041"
}
},
"IOU": {
"36": {
"2018-08-13 14:15:01": "535.890"
}
}
}
这与您的附加更改有关,肯定会取得进展,但最佳情况下它不会像这样将它们分开,只是将它们分开购买计数
counts 格式实际上只是一个整数,表示在哪里计数,例如现在在哪里
36 但从技术上讲,下一次运行 phistory 计数已经增加到 37,将加载 37 到数据条目中
{
"EVL": {
"35": {
"2018-08-13 14:00:01": "440.716"
}
"36": {
"2018-08-13 14:00:01": "440.716"
}
},
"TCHS": {
"35": {
"2018-08-13 14:00:01": "994.678"
}
"36": {
"2018-08-13 14:00:01": "440.716"
}
},
这是所需的格式
我想我可以把 b 插入到类似的东西中
b = u'EVL'
import unicodedata
unicodedata.normalize('NFKD', b).encode('ascii','ignore')
'EVL'
【问题讨论】:
标签: python json python-2.7