假设我们有两个词典:
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
,因为它是a
,b
,c
的值的总和,这些值已分配给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
对不起这个微不足道的问题,但我在这里错过了什么?
答案 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())))