我正在尝试从一个函数中为多个键添加值,最好是通过一种方法。但是到目前为止,我还没有找到适合我想做的事情的方法,也没有找到解决问题的方法。
我知道d.update()
仅用于更新值的工作,但这只是覆盖旧结果,而我想将值添加到键中。
以下是我正在处理的代码:
def split(query):
query = query.split()
total = dict()
for item in query:
total.update(process(item)) # <-- I want to modify this bit
print(total)
process(item)
返回dict
具有一定数量的键和值的 a。
例如:
process(item)
可能会返回如下内容:
{
"Tim": 12.5,
"Brad": 15,
"Amy": 10
}
对于第二次迭代,它可能会返回:
{
"Tim": 3,
"Brad": 7,
"Amy": 8
}
现在,total
将成为第二次迭代。但是,我希望它将值添加到名称中,因此新列表将是:
total = {
"Tim": 15.5,
"Brad": 22,
"Amy": 18
}
如果只有 3 个键,我可以只对这些键进行硬编码。密钥的数量可能会有所不同,但一旦执行代码,就不会添加新的密钥。
该类collections.Counter
使用其update
方法完全实现了您想要的:
from collections import Counter
...
def split(query):
total = Counter()
for item in query.split():
total.update(process(item))
return total
Counter
是 的子类dict
,因此您可以按原样返回它或dict
在返回之前将其包装在 a 中。无论哪种方式,该update
方法都会将任何匹配键的值加在一起。这些值可以是任何类型,只要映射中已有的内容以及您为给定键传入的内容支持+
它们之间的运算符。
如果您只想使用内置函数(无导入),最好的办法可能是使用dict.get
添加可能尚不存在的值:
def split(query):
total = {}
for item in query.split():
for k, v in process(item).items():
total[k] = total.get(k, 0) + v
return total
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句