Я постоянно генерируя плейлист с этой структурой:Обновление нового словаря ключи + прибавка старого словаря значения
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)
Я использую эту рабочую функцию updateTrackCounts()
предложенную @Moses Koledoye, что увеличивает трек 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)
но иногда новый playlist
генерироваться будет иметь новый keys
, которые не присутствовали в dictionary
сгенерированного ранее.
Как настроить код выше, так что делает increment function
применять предварительно существующие keys
на предварительно существующие file
и обновлять 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 –