我一直在寻找可能的答案,并且找不到用dict理解或一种函数编程形式的方法,用一个dicts 的字典而不使用for循环。
我有一个功能:
get_grades(theDict, hw)
它采用了dicts的字典和一个字符串,例如'hw1'或'hw4'这种格式。
theDict的格式是:
get_grades({'Ggg':{'hw1': 1, 'hw2': 2, 'hw3': 3},'Hhh':{'hw1': 4, 'hw2': 3,'hw3': 6}},'hw1')
我正在尝试获取与hw匹配的所有键并将该键的所有值相加。如果hw = hw1,那么函数将返回:
5
(这是加在一起的所有hw1键值)
答案 0 :(得分:2)
您可以使用Err1: 4
:
map
输出:
def get_grades(d, h):
return sum(map(lambda x:x.get(h, 0), d.values()))
print(get_grades({'Ggg':{'hw1': 1, 'hw2': 2, 'hw3': 3},'Hhh':{'hw1': 4, 'hw2': 3,'hw3': 6}},'hw1'))
答案 1 :(得分:2)
我没有得到你的意思“没有使用for循环”......有什么意义,怎么可能,因为求和和无限期的项目需要迭代。
我会将sum()
与生成器表达式结合使用:
def get_grades(theDict, hw):
return sum(v.get(hw, 0) for v in theDict.values())