(Python)函数,用于从嵌套字典中的特定键中查找值之和
编辑:我收到的错误如下所示。非常非常感谢你们的帮助。我是Python新手,花了几个小时研究这个问题,但毫无结果。我真的很感谢你的帮助 TypeError:列表索引必须是整数或片,而不是str 使用下面的字典,我需要找到所有数量加起来的总和1+3+3+1+9=17(Python)函数,用于从嵌套字典中的特定键中查找值之和,python,dictionary,nested,sum,Python,Dictionary,Nested,Sum,编辑:我收到的错误如下所示。非常非常感谢你们的帮助。我是Python新手,花了几个小时研究这个问题,但毫无结果。我真的很感谢你的帮助 TypeError:列表索引必须是整数或片,而不是str 使用下面的字典,我需要找到所有数量加起来的总和1+3+3+1+9=17 shopping_cart = { "tax": .08, "items": [ { "title": "orange juice", "price": 3
shopping_cart = {
"tax": .08,
"items": [
{
"title": "orange juice",
"price": 3.99,
"quantity": 1
},
{
"title": "rice",
"price": 1.99,
"quantity": 3
},
{
"title": "beans",
"price": 0.99,
"quantity": 3
},
{
"title": "chili sauce",
"price": 2.99,
"quantity": 1
},
{
"title": "chocolate",
"price": 0.75,
"quantity": 9
}
]
}
我能想到的最好的函数如下所示,但我得到了一个错误。感谢您的帮助。多谢各位
def total_number_of_items(d):
return sum(d['items']['quantity'])
由于购物车['items']是一个列表,因此需要使用列表理解或类似工具来提取要求和的单个数量:
def total_number_of_items(d):
return sum([item['quantity'] for item in d['items']])
print(total_number_of_items(shopping_cart))
输出
17
我可以给你一个直截了当的回答:
In [42]: functools.reduce(lambda i, j: i+j["quantity"], shopping_cart["items"], 0)
Out[42]: 17
但是你必须非常清楚你的问题和你所面临的错误。请遵循社区和StackOverflow指南。我知道您对StackOverflow还不熟悉。但我遇到了一个错误什么错误?请提供完整的错误信息,以及一个。Nick抢先告诉了我。哦,为了掩盖AMC的评论,只需粘贴错误消息作为输出,就像您对代码所做的那样。欢迎加入。购物车['items']]中d的总和[d['quantity']OP有一个简单的问题,有一个简单的错误原因。尼克掩护得很好。你带来了,不一定是坏的,但肯定是更复杂的东西。这不起作用,不会抛出错误intcallable@ShubhamDevgan这应该行得通。也许你设定了一个可变的和。这对我来说行得通。我写了几乎完全相同的东西,这很有效。粘贴Nick的代码也很有效。我认为你在某些地方犯了一个错误。是的,很抱歉,它起了作用。除非你编辑答案,对答案做一些更改,否则我无法删除否决票。
def tot(d):
print(sum([i['quantity'] for i in d['items']]))