【问题标题】:Python - Increment dictionary valuesPython - 增加字典值
【发布时间】:2016-11-11 00:33:02
【问题描述】:

我有这个嵌套的dictionary

 playlist =  {u'user1': {u'Roads': 1.0, u'Pyramid Song': 1.0, u'Go It Alone': 1.0}}

我正在尝试将其float 值增加1.0

user = playlist.keys()[0]
counts = playlist[user].values()
for c in counts:
    c += 1.0

我已经走到这一步了。

现在,我如何updatedictionaryincremented value

【问题讨论】:

  • 请不要对不是代码的东西使用代码降价。
  • 我不知道你在说什么..
  • 你可以这样做playlist['user1']['Roads'] += 1。但不确定你想做什么?您想同时增加所有内容,还是只增加选定的值?

标签: python dictionary increment


【解决方案1】:

要更新嵌套字典中具有不同嵌套级别的浮点值,您需要编写一个递归函数来遍历数据结构,在它们是浮点数时更新值或在您有字典时调用函数:

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}}

【讨论】:

  • 有没有办法在你的函数中调整它,以便当我加载一个新的playlist dictionary ?
  • 这就是目前所做的,或者你想给出更多描述以便我清楚地理解你?
  • 我在这里生成新的播放列表,新的结果总是打印相同的播放列表并增加值。以前不存在的曲目不会作为 value = 1.0 的新键添加到字典中,我的意思是
  • 哦。但这需要另一个功能
  • 我应该再问一个问题并标记你吗?
【解决方案2】:

如果播放列表字典只嵌套一层,可以使用下面的sn-p:

for user_key in playlist.keys():
    for song_key in playlist[user_key].keys():
        playlist[user_key][song_key] += 1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-31
    • 1970-01-01
    • 2012-10-11
    相关资源
    最近更新 更多