Python: 对字典的值求和,哪些键是另一个字典中的值
Python: sum values of dict which keys are values in another dict
假设我们有两个字典:
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
在 d1
.
我的尝试:
d3={key:sum(d2[i] for i in d1[j] for j in d1.keys()) for key in d1.keys()}
returns:
NameError: global name 'j' is not defined
很抱歉这个琐碎的问题,但我在这里遗漏了什么?
如果用dict.items()
就简单多了:
d3 = {key: sum(d2[v] for v in val) for key, val in d1.items()}
d3 = {}
for k,v in d1.items():
d3[k] = sum([ d2[x] for x in v ])
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())))
假设我们有两个字典:
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
在 d1
.
我的尝试:
d3={key:sum(d2[i] for i in d1[j] for j in d1.keys()) for key in d1.keys()}
returns:
NameError: global name 'j' is not defined
很抱歉这个琐碎的问题,但我在这里遗漏了什么?
如果用dict.items()
就简单多了:
d3 = {key: sum(d2[v] for v in val) for key, val in d1.items()}
d3 = {}
for k,v in d1.items():
d3[k] = sum([ d2[x] for x in v ])
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())))