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 use
u1.get(key,0)
@AshwiniChaudhary Perfect!!谢谢!这很有效。。是否有方法返回0而不是无,因为我正在使用返回的值进行进一步的计算。我不想在每次dict搜索后为None添加检查条件。@arunpasathshankar use
u1.get(key,0)
@AshwiniChaudhary Perfect!!