如何对python中一个字典中所有对象的值求和

我有以下字典:


data = {

    'test1': {

        'x1': {

            'z1': 22,

            'z2': 11,

            'z3': 21,

        },

        'x2': {

            'z1': 15,

            'z2': 34,

            'z3': 54,

        }

    },

    'test2': {

        'x1': {

            'z1': 22,

            'z2': 11,

            'z3': 21,

        },

        'x2': {

            'z1': 15,

            'z2': 34,

            'z3': 54,

        }

    }

}

我想做的是对“test1”中的所有 z2 对象求和,在这种情况下,得到 45


我知道我可以通过以下方式做到这一点:


data['test1']['x1']['z2'] + data['test1']['x2']['z2']

但想知道是否有机会在一个代码中使用它,例如


data['test1'][ * ]['z2'] 星星代表所有对象的地方(就像在excel中一样 - 这个例子当然不起作用


想知道这个问题是否有更好的解决方案


芜湖不芜
浏览 281回答 2
2回答

元芳怎么了

您可以使用sum:d = {'test1': {'x1': {'z1': 22, 'z2': 11, 'z3': 21}, 'x2': {'z1': 15, 'z2': 34, 'z3': 54}}, 'test2': {'x1': {'z1': 22, 'z2': 11, 'z3': 21}, 'x2': {'z1': 15, 'z2': 34, 'z3': 54}}}result = sum(b['z2'] for a, b in d['test1'].items())输出:45编辑:没有显式循环,您可以使用reduce:from functools import reducenew_result = reduce(lambda x, y:x+y['z2'], d['test1'].values(), 0)输出:45
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python