Python:dict的和值,哪些键是另一个dict中的值

时间:2017-09-21 14:10:36

标签: python dictionary dictionary-comprehension

假设我们有两个词典:

d1={'A':['a','b','c'],'B':['d','e']}
d2={'a':3,'b':1,'c':1,'d':2,'e':0}

我们需要计算与d1具有相同键的第三个字典,对于值,d2中与这些键对应的值的总和,而这些键又是值在d1

示例:

d3={'A':5,'B':2}

其中5已分配给A,因为它是abc的值的总和,这些值已分配给A 1}} d1

我的尝试:

d3={key:sum(d2[i] for i in d1[j] for j in d1.keys()) for key in d1.keys()} 

返回: NameError: global name 'j' is not defined

对不起这个微不足道的问题,但我在这里错过了什么?

3 个答案:

答案 0 :(得分:3)

如果您使用dict.items(),则比这简单:

d3 = {key: sum(d2[v] for v in val) for key, val in d1.items()}

答案 1 :(得分:2)

d3 = {}
for k,v in d1.items():
     d3[k] = sum([ d2[x] for x in v ])

答案 2 :(得分:1)

d1={'A':['a','b','c'],'B':['d','e']}
d2={'a':3,'b':1,'c':1,'d':2,'e':0}

dict(zip(d1.keys(), map(lambda x:sum(d2.get(i) for i in x[1]), d1.items())))