【发布时间】:2017-07-16 03:19:32
【问题描述】:
我正在尝试编写一个简单的 Python 函数,它将所有具有 likes 键的值相加。我正在为这项任务使用函数式编程。因此,我需要使用 list-comprehension、map、filter 或 reduce。在这种情况下,我认为 reduce 是一个合理的选择。
def sum_favorites(msgs):
num_favorites = reduce(lambda x, y: x["likes"] + y["likes"], msgs)
return num_favorites
content1 = {"likes": 32, ...}
content2 = {"likes": 8, ...}
content3 = {"likes": 16, ...}
contents = [content1, content2, content3]
print(sum_favorites(contents))
问题出现在我实际运行代码时。我似乎收到了以下内容:TypeError: 'int' object is not subscriptable。对我来说,这个错误毫无意义。如果reduce 真的在遍历给定的参数,那么传递给 lambda 函数的每个项目都应该是一个字典 - 每个项目肯定都有一个 likes 键。问题是什么,这个 Python 错误究竟是什么意思?
【问题讨论】:
标签: python dictionary functional-programming itertools