Python try except continue无法打印预期结果
有人能指出我哪里出了问题,除了继续或更好地解决这个问题之外,这里到底发生了什么Python try except continue无法打印预期结果,python,exception,dictionary,python-2.7,Python,Exception,Dictionary,Python 2.7,有人能指出我哪里出了问题,除了继续或更好地解决这个问题之外,这里到底发生了什么 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 k
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
如果任何查找失败,
continue
将从dic
跳到下一个键。您希望使用即使找不到密钥也能保证给出结果的操作,例如:
如果任何查找失败,
continue
将从dic
跳到下一个键。您希望使用即使找不到密钥也能保证给出结果的操作,例如:
您的“uX”字典没有与“dic”相同的键,因此在尝试检索这些值时失败。然后捕获异常并调用“continue”,它会在执行print语句之前自动跳回循环的顶部
尝试取出Try/except语句,Python解释器将显示问题的确切位置。您的“uX”字典与“dic”没有相同的键,因此在尝试检索这些值时失败。然后捕获异常并调用“continue”,它会在执行print语句之前自动跳回循环的顶部 尝试取出Try/except语句,Python解释器将准确地给出问题所在的错误。
将引发异常u2['hari']
也会引发异常u3['akila']
也将再次引发异常u4['varun']
将引发异常u2['hari']
也会引发异常u3['akila']
也将再次引发异常u4['varun']
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]
试试这个:
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]
你希望得到什么结果?@Kevin显示字典中每个关键字(单词)的dicts u1、u2、u3和u4的匹配值,如果你想看到一些结果,可以使用
pass
而不是continue
。@AshwiniChaudhary:那不是个好主意。如果他第一次遇到异常,pass
将给他一个namererror
;如果他在第一次通过后出现异常,pass
将使他打印出上一个循环中的值…@AshwiniChaudhary pass没有解决我的问题您希望得到什么结果?@Kevin为每个键(字)显示dicts u1、u2、u3和u4的匹配值在字典中,如果你想看到一些结果,可以使用pass
而不是continue
。@AshwiniChaudhary:那不是个好主意。如果他第一次遇到异常,pass
将给他一个namererror
;如果他在第一次通过后出现异常,pass
将导致他打印出上一个循环中的值…@AshwiniChaudhary pass无法修复我的问题xx!这很有效。。是否有方法返回0而不是无,因为我正在使用返回的值进行进一步的计算。我不想在每次dict搜索后为None添加检查条件。@arunpasathshankar useu1.get(key,0)
@AshwiniChaudhary Perfect!!谢谢!这很有效。。是否有方法返回0而不是无,因为我正在使用返回的值进行进一步的计算。我不想在每次dict搜索后为None添加检查条件。@arunpasathshankar useu1.get(key,0)
@AshwiniChaudhary Perfect!!