我有两个词典如下:
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
中,请在a
和b
中打印密钥的值作为0
中密钥的值。输出将是:
a
它应该很简单,但我无法弄清楚我是如何做到的。谢谢!
答案 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')