我不斷地生成播放列表採用這種結構:更新新的字典鍵+增量舊字典值
playlist = {u'user1': {u'Roads': 1.0, u'Pyramid Song': 1.0, u'Go It Alone': 1.0}}
,我把它上傳到一個目錄。然後我檢查文件是否已經上傳過。
if os.path.exists('db/playlist.json'):
with open('playlist.json', 'r+') as f:
plist = json.load(f)
# increment track count
updateTrackCounts(db_1,value=1)
#update json here
f.seek(0)
f.truncate()
json.dump(plist, f)
print (plist)
我使用@Moses Koledoye提出這方面的工作功能updateTrackCounts()
,由一個遞增的軌道counts
。
def updateTrackCounts(d, value=0):
for i in d:
if isinstance(d[i], dict):
updateTrackCounts(d[i], value)
elif isinstance(d[i], float):
d[i] += value
updateTrackCounts(playlist, value=1)
但有時產生將有新的keys
新playlist
,即不存在之前產生的dictionary
。
如何調整上面的代碼,因此使得increment function
應用到預先存在的預先存在file
keys
,並更新plist
總是新keys
與value
= 1.0
考慮?
與inner
dictionary
一個新的密鑰所需的結果:
playlist = {u'user1': {u'Bittersweet Symphony':1.0, u'Roads': 2.0, u'Pyramid Song': 2.0, u'Go It Alone': 2.0}}
@Moses Koledoye –