如何对字典中的所有值求和?

新手上路,请多包涵

假设我有一个字典,其中的键映射到整数,例如:

 d = {'key1': 1,'key2': 14,'key3': 47}

在这种情况下,是否有一种语法上简约的方式来返回 d 中的值的总和 — 即 62

原文由 nedblorf 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 725
2 个回答

如您所料:

 sum(d.values())

原文由 phihag 发布,翻译遵循 CC BY-SA 4.0 许可协议

在 Python 2 中,您可以使用 itervalues() 字典方法避免制作所有值的临时副本,该方法返回字典键的迭代器:

 sum(d.itervalues())

在 Python 3 中,您可以只使用 d.values() 因为该方法已更改为执行此操作(并且 itervalues() 已被删除,因为它不再需要)。

为了更容易编写始终迭代字典键值的版本无关代码,实用函数可能会有所帮助:

 import sys

def itervalues(d):
    return iter(getattr(d, ('itervalues', 'values')[sys.version_info[0]>2])())

sum(itervalues(d))

这基本上就是本杰明彼得森的 six 模块所做的。

原文由 martineau 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题