Dict of Dict Sum Similar Keys 只有字典理解

Dict of Dict Sum Similar Keys with only dict comprehension

我已经四处寻找可能的答案,但无法找到仅通过字典理解或使用字典字典的函数式编程形式来做到这一点的方法而不使用 for 循环

我有一个功能:

get_grades(theDict, hw)

它接受一个字典的字典和一个字符串,例如 'hw1' 或 'hw4' 这种格式的字符串。

theDict的格式为:

get_grades({'Ggg':{'hw1': 1, 'hw2': 2, 'hw3': 3},'Hhh':{'hw1': 4, 'hw2': 3,'hw3': 6}},'hw1')

我正在尝试获取与 hw 匹配的所有键,并对该键的所有值求和。如果 hw = hw1 那么函数将 return:

5 

(即所有hw1键值加在一起)

您可以使用 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'))

输出:

5

我不明白你的意思"without using for loops"...有什么意义,这怎么可能,因为求和和不确定的项目集需要迭代。

我会将 sum() 与生成器表达式结合使用:

def get_grades(theDict, hw):
    return sum(v.get(hw, 0) for v in theDict.values())