有人可以指出我哪里出错了,除了继续或更好的解决这个问题的方法之外,这里究竟发生了什么。
dic = {'arun': 123213, 'hari': 31212, 'akila': 321, 'varun': 12132, 'apple': 3212}
u1 = {'arun': 123123, 'orange': 1324214}
u2 = {'akila': 1234124, 'apple': 123123}
u3 = {'hari': 144}
u4 = {'anna': 23322}
for key, value in dic.iteritems():
try:
A = u1[key]
B = u2[key]
C = u3[key]
D = u4[key]
except KeyError:
continue
print A, B, C, D # fails to print
答案 0 :(得分:6)
如果任何查找失败,continue
将跳至dic
的下一个键。您希望使用即使未找到密钥也能保证给出结果的操作,例如dict.get
:
for key, value in dic.iteritems():
A = u1.get(key) # A is None if not found
# ...
print A, B, C, D
答案 1 :(得分:0)
您的'uX'词典与'dic'没有相同的键,因此在尝试检索这些值时失败。然后你捕获异常并调用'continue',它会在print语句执行之前自动跳回到循环的顶部。
尝试取出try / except语句,Python解释器会发出错误信息,确切地说是你的问题所在。
答案 2 :(得分:0)
u2['hari']
会引发异常u3['akila']
也会引发异常u4['varun']
将再次提出异常虽然该项目不存在,但您每次都尝试使用字典中的项目
答案 3 :(得分:0)
试试这个:
dic = {'arun': 123213, 'hari': 31212, 'akila': 321, 'varun': 12132, 'apple': 3212}
u1 = {'arun': 123123, 'orange': 1324214}
u2 = {'akila': 1234124, 'apple': 123123}
u3 = {'hari': 144}
u4 = {'anna': 23322}
for key in dic:
print list(d.get(key) for d in (u1, u2, u3, u4))
它将您的输出打印为列表:
>>> for key in dic:
... print list(d.get(key) for d in (u1, u2, u3, u4))
...
[123123, None, None, None]
[None, 1234124, None, None]
[None, 123123, None, None]
[None, None, 144, None]
[None, None, None, None]