两个字典做一个新的,难以参考

时间:2013-07-19 00:42:41

标签: python loops dictionary reference

这是我的代码到目前为止的样子:

给定字典d1和d2,创建一个具有以下属性的新字典:对于d1中的每个条目(a,b),如果d2中有条目(b,c),则条目(a,c) )应该添加到新词典中。  例如,如果d1是{2:3,8:19,6:4,5:12}而d2是{2:5,4:3,3:9},则新词典应为{2:9} ,6:3}  将新词典与变量d3

相关联
d3 ={} 
for i in d1:
    for i in d2:
        if d1.get(i,default=none) in d2:
            d3[d1] = d2.get(i,default = None)

3 个答案:

答案 0 :(得分:2)

重申Ryan所说的,你应该做自己的功课。

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

答案 1 :(得分:1)

Python可以很好地表达这一点。太糟糕了它的家庭作业,你可能无法使用字典理解或其他任何限制你的老师"给你

>>> d1 = {2:3, 8:19, 6:4, 5:12}
>>> d2 = {2:5, 4:3, 3:9}
>>> d3 = {a:d2[b] for a, b in d1.items() if b in d2}
>>> d3
{2: 9, 6: 3}

对于Python2.5或Python2.6,使用带dict()

的生成器表达式
d3 = dict((a, d2[b]) for a, b in d1.items() if b in d2)

对于2.4,请参阅@ KP的回答

答案 2 :(得分:0)

或者,如果你喜欢单行:

d3 = dict([(k, d2[v]) for k, v in d1.items() if v in d2])