Dict Sum的词典相似的键只有dict理解

时间:2018-05-05 14:31:28

标签: python dictionary nested dictionary-comprehension

我一直在寻找可能的答案,并且找不到用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键值)

2 个答案:

答案 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())