用lambda函数分别对字典value求和

只要对每个字典求总和就行,字典如下:

dict1={
    'zhangsan':30,
    'lisi':40,
    'wangwu':90
}
dict2={
    'zhangsan':'30',
    'lisi':'40',
    'wangwu':'90'
}
dict3={
    'yiban':{
        'zhangsan':30,
        'zhangsi':40,
    },
    'erban':{
        'lisan':40,
        'lisi':50
    }
}


dict1={
    'zhangsan':30,
    'lisi':40,
    'wangwu':90
}
dict2={
    'zhangsan':'30',
    'lisi':'40',
    'wangwu':'90'
}
dict3={
    'yiban':{
        'zhangsan':30,
        'zhangsi':40,
    },
    'erban':{
        'lisan':40,
        'lisi':50
    }
}

s1 = (lambda x :sum(x.values()))(dict1)
s2 = (lambda x:sum([int(i) for i in x.values()]))(dict2)
s3 = (lambda x,y:sum(x.values()) + sum(y.values()))(*dict3.values())
print("s1 = {}".format(s1))
print("s2 = {}".format(s2))
print("s3 = {}".format(s3))
>>> dict1={'zhangsan':30, 'lisi':40, 'wangwu':90}
>>> dict2={'zhangsan':'30', 'lisi':'40', 'wangwu':'90'}
>>> dict3={
    'yiban':{
        'zhangsan':30,
        'zhangsi':40,
    },
    'erban':{
        'lisan':40,
        'lisi':50
    }
}
>>> list(map(lambda d:sum([int(d[k]) if isinstance(d[k],(int, str)) else sum([int(d[k][kk]) for kk in d[k]]) for k in d]), [dict1, dict2, dict3]))
[160, 160, 160]

我不知道你说的是不是这个意思,我参考了上面几位兄弟的写法


dict1={'zhangsan':30,'lisi':40,'wangwu':90}
dict2={'zhangsan':'30','lisi':'40','wangwu':'90'}
dict3={'yiban':{'zhangsan':30,'zhangsi':40},'erban':{'lisan':40,'lisi':50}}
sum1=lambda x:sum(x.values())
sum2=lambda x:sum([int(each) for each in x.values()])
sum3=lambda x:sum([sum(x[each].values()) for each in dict3])
print(sum1(dict1),sum2(dict2),sum3(dict3))