当键不同时,比较两个词典中的值

时间:2014-05-27 13:34:10

标签: python dictionary compare key-value

我需要比较两个字典与DIFFERENT键之间的值,并将结果放在第三个字典中。输入:

a={1:[0,0], 2:[1,0], 3:[1,2]}
b={4:[1,2], 5:[1,3]}

输出:我想要两个字典,它们都有从'b'复制的密钥。在所有情况下,我都想忽略条目'0'。第一个输出显示'a'中的键与b中的键具有完全相同的值。

c={4:3, 5:0}

第二个输出dict显示'a'中有多少个键有1个(且只有1个)值与b中的键相同。

d={4:[2], 5:[2,3]}

我尝试这样做:

c=dict.fromkeys(b.keys())
d=dict.fromkeys(b.keys())

for k, v in b.iteritems():
    TST_s, TST_d= v[0], v[1]
    for each, every in a.iteritems():
        TRN_s, TRN_d= every[0], every[1]
        if TST_s == TRN_s and TST_d==TRN_d:
            c[k].append(each)
        elif TST_s == TRN_s and TST_d!=TRN_d:
            d[k].append(each)
        elif TST_s!= TRN_s and TST_d==TRN_d:
            d[k].append(each)
        else:
            pass

但我得到了

AttributeError: 'NoneType' object has no attribute 'append'

非常感谢任何帮助!

PS。我知道代码可以简化,但是在编程方面我不是很有才华,而且我还没有考虑'0',我想在稍后阶段删除它。目前我只是想让它产生输出......

1 个答案:

答案 0 :(得分:2)

c [k]和d [k]为无,因为dict.fromkeys(b.keys())返回{4:None, 5:None}

相关问题