比较两个词典的值

时间:2016-08-02 10:47:13

标签: python dictionary

我有两个词典如下:

a = {1:2, 3:4, 5:6}
b = {1:5, 3:6, 7:1}

对于a中的每个密钥,我想检查密钥是否存在于b中,如果是,我想打印两个密钥的值,如果没有,我打印{{ 1}}作为0中的键值:

b

输出结果为:

for key in a.keys():
    if key in b.keys():
        print key, a[key], b[key]
    else:
        print key, a[key], '0'

但是,我还想在1 2 5 3 4 6 5 6 0 中打印密钥的值,如果它在b中不存在,则与最后一个语句相反,如果密钥在a中但不在b中,请在ab中打印密钥的值作为0中密钥的值。输出将是:

a

它应该很简单,但我无法弄清楚我是如何做到的。谢谢!

3 个答案:

答案 0 :(得分:2)

如果我理解正确,您希望遍历任一字典中的所有键,并使用'0'打印两个字典中的值,如果该字典中缺少该键。像这样:

for key in set(a)|set(b):
    print key, a.get(key, '0'), b.get(key, '0')

set(a)|set(b)是每个字典中键集的并集(即它是来自任一字典的不同键的集合)。

如果字典中缺少密钥,

dictionary.get(key, '0')将返回'0'

答案 1 :(得分:2)

for key in set(a.keys()) | set(b.keys()):
    print key, a.get(key, 0), b.get(key,0)

|表示在集合上下文中的联合。您还可以将结果集转换为列表,并在迭代之前对其进行排序。

答案 2 :(得分:0)

使用dict b' get方法,提供默认值,以便在找不到密钥时使用。

for key in a:
    print key, a[key], b.get(key, '0')