我不断地生成播放列表采用这种结构:更新新的字典键+增量旧字典值
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 –