我已经为这个问题寻找了可能的答案,但没有找到一种方法来完成这一任务,只使用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键值相加在一起)
发布于 2018-05-05 14:40:36
我不明白你说的“不用循环”.重点是什么,以及如何做到这一点,因为项的求和和不确定的集合需要迭代。
我会将sum()与生成器表达式结合使用:
def get_grades(theDict, hw):
return sum(v.get(hw, 0) for v in theDict.values())发布于 2018-05-05 14:33:48
您可以使用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'))输出:
5https://stackoverflow.com/questions/50190544
复制相似问题