python - 如何递归更新列表

标签 python

我有一个字典列表:

a = [{'one': 1}, {'two': 2}, {'three': 3}, {'four': 4}, {'five': 5}]

我想通过所有余数的总和来更新此列表中每个元素的值。 (因此 'one' 将获得值 2+3+4+5)。

所以它看起来像这样:

a = [{'one': 14}, {'two': 12}, {'three': 9}, {'four': 5}, {'five': 5}]

'five' 是最后一个,所以不会更新。

我不确定如何实现这一点。我认为您构建了一个函数,该函数将递归地调用自身,例如:

def recursive(a):
   if len(a) == 1:
      return list(a[0].values())[0]
    else:
      val = list(a[0].values())[0]
      return val + recursive(a.pop(0))

但我不确定这样做 list(a[0].values())[0] 是“最佳”方式。这也得到一个 KeyError: 0

有什么想法吗?

最佳答案

迭代和就地解决方案

a = [{'one': 1}, {'two': 2}, {'three': 3}, {'four': 4}, {'five': 5}]
sum_so_far = 0
first_flag = False
for i in a[::-1]:
    k,v = i.items()[0]   #For Python 3 k,v = list(i.items())[0]
    sum_so_far += v
    if first_flag:
        i[k] = sum_so_far # do not change the value at first

    first_flag=True

输出

[{'one': 15}, {'two': 14}, {'three': 12}, {'four': 9}, {'five': 5}]

关于python - 如何递归更新列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54795707/

相关文章:

python - 为什么 "1 in range(2) == True"评估为 False?

python - 迭代文本文件,如何继续循环中的下一行?

python - 执行 re.search() 直到行尾,然后更新数据帧

python - 从 NumPy 数组中获取值

python - 如何更改 python 3 中日期的格式?

python - 使用python对列表进行排序

python - 捕食者与猎物的Python程序

python - 如何将Hyperledger智能合约连接到python脚本

python - 检查项目是否在列表列表中

python - 非递归 os.walk()