Python-增量字典值
我有一本嵌套的Python-增量字典值,python,dictionary,increment,Python,Dictionary,Increment,我有一本嵌套的词典: playlist = {u'user1': {u'Roads': 1.0, u'Pyramid Song': 1.0, u'Go It Alone': 1.0}} 我试图通过1.0增加它的float值: user = playlist.keys()[0] counts = playlist[user].values() for c in counts: c += 1.0 我已经走了这么远 现在,我如何使用递增值更新字典?要使用不同嵌套级别更新嵌套字典中的浮点
词典
:
playlist = {u'user1': {u'Roads': 1.0, u'Pyramid Song': 1.0, u'Go It Alone': 1.0}}
我试图通过1.0
增加它的float
值:
user = playlist.keys()[0]
counts = playlist[user].values()
for c in counts:
c += 1.0
我已经走了这么远
现在,我如何使用
递增值更新字典?要使用不同嵌套级别更新嵌套字典中的浮点值,需要编写递归函数遍历数据结构,当值处于浮动状态时更新这些值,或者在有字典时调用函数:
def update_floats(d, value=0):
for i in d:
if isinstance(d[i], dict):
update_floats(d[i], value)
elif isinstance(d[i], float):
d[i] += value
update_floats(playlist, value=1)
print(playlist)
# {'user1': {'Go It Alone': 2.0, 'Pyramid Song': 2.0, 'Roads': 2.0}}
要使用不同的嵌套级别更新嵌套字典中的浮点值,需要编写递归函数遍历数据结构,在值为浮点时更新值,或者在有字典时调用函数:
def update_floats(d, value=0):
for i in d:
if isinstance(d[i], dict):
update_floats(d[i], value)
elif isinstance(d[i], float):
d[i] += value
update_floats(playlist, value=1)
print(playlist)
# {'user1': {'Go It Alone': 2.0, 'Pyramid Song': 2.0, 'Roads': 2.0}}
如果播放列表词典仅嵌套一层,则可以使用以下代码段:
for user_key in playlist.keys():
for song_key in playlist[user_key].keys():
playlist[user_key][song_key] += 1
如果播放列表词典仅嵌套一层,则可以使用以下代码段:
for user_key in playlist.keys():
for song_key in playlist[user_key].keys():
playlist[user_key][song_key] += 1
请不要对非代码的东西使用代码标记。我不知道你在说什么..你可以这样做播放列表['user1']['Roads']+=1
。但不确定你想做什么?你想同时增加所有内容,还是只增加选定的值?请不要对非代码的内容使用代码标记。我不知道你在说什么..你可以这样做播放列表['user1']['Roads']+=1
。但不确定你想做什么?您想同时增加所有内容,还是只增加选定的值?在您的函数中,是否有办法调整它,使其仅增加d
中已存在的曲目(dict
键
)的值?如果我加载新的播放列表词典
,当前就是这样做的,或者你想给出更多的描述以便我清楚地理解你?我在这里生成新的播放列表,新的结果总是以递增的值打印相同的播放列表。我的意思是,以前不存在的音轨不会作为值为1.0的新键添加到字典中。但这需要另一个函数我是否应该问另一个问题并标记您?在您的函数中,是否有一种方法可以调整它,使其仅为d
中已经存在的曲目(dict
键
)增加值?如果我加载新的播放列表词典
,当前就是这样做的,或者你想给出更多的描述以便我清楚地理解你?我在这里生成新的播放列表,新的结果总是以递增的值打印相同的播放列表。我的意思是,以前不存在的音轨不会作为值为1.0的新键添加到字典中。但这需要另一个功能我应该问另一个问题并标记你吗?