gpt4 book ai didi

Python 字典 sumUp 值

转载 作者:太空宇宙 更新时间:2023-11-04 03:05:04 26 4
gpt4 key购买 nike

下面的函数应该返回一个新的字典,它已经对值进行了总结。

import functools
def sumUp(d):
for k in d:
d.update({k: functools.reduce(lambda x, y: x + y, d[k])})
print(d)

当我按如下方式调用该函数时,我得到以下 TypeError 我不明白为什么:

sumUp({"Ungefucht": (165, 165, 165, 255, 286.25, 255, 165, 240, 240, 150), "Malsch": (120, 240, 120, 120, 120, 120, 120), "AAA": (1, 2), "Fens": (115.20, 69.60, 28.80, 50.40), "Betti": (82.50,)})

Traceback (most recent call last):

File "", line 1, in

File "/home/amir/programming/python/lern.py", line 6, in sumUp print(d)

TypeError: reduce() arg 2 must support iteration

当我省略其中一个键值时,它工作正常:

sumUp({"Ungefucht": (165, 165, 165, 255, 286.25, 255, 165, 240, 240, 150), "Malsch": (120, 240, 120, 120, 120, 120, 120), "AAA": (1, 2), "Fens": (115.20, 69.60, 28.80, 50.40)})

{'Malsch': 960, 'Ungefucht': 2086.25, 'Fens': 264.0, 'AAA': 3}

为什么第一个例子没有按预期工作?

最佳答案

这个有效:

def sumUp(d):
new_d = {k: sum(v) for k, v in d.items()}
print(new_d)
return new_d

请记住,您是在迭代字典的同时更新字典,这会导致各种奇怪的行为。

该行为是相当随机的,取决于键的散列的加盐(这会修改字典顺序)。您无法在 Python 3 中一致地重现它。

这是你的代码修复:

def sumUp2(d):
for k in d:
d[k] = functools.reduce(lambda x, y: x + y, d[k])
print(d)

它设置 key 而不是更新字典,这是安全的。

关于Python 字典 sumUp 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39733443/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com