Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
(Python)函数,用于从嵌套字典中的特定键中查找值之和_Python_Dictionary_Nested_Sum - Fatal编程技术网

(Python)函数,用于从嵌套字典中的特定键中查找值之和

(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

编辑:我收到的错误如下所示。非常非常感谢你们的帮助。我是Python新手,花了几个小时研究这个问题,但毫无结果。我真的很感谢你的帮助

TypeError:列表索引必须是整数或片,而不是str 使用下面的字典,我需要找到所有数量加起来的总和1+3+3+1+9=17

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']]))