【问题标题】:How can I beautifully deal with this dirty-multiple-try code我怎样才能漂亮地处理这个肮脏的多次尝试代码
【发布时间】:2020-11-04 04:36:20
【问题描述】:

大家好,请帮我修改这段代码。 你可能知道我想要做什么 拥有 keyError 并不重要,但无论如何我想尝试每个 del 代码。 它按我的预期工作,但我很确定还有更漂亮的方法可以做到这一点。

try:
    del response_json['sha1']
except:
    print("keyError: Fail to delete sha1 hash key")
try:
    del response_json['sha224']
except:
    print("keyError: Fail to delete sha224 hash key")
try:
    del response_json['sha256']
except:
    print("keyError: Fail to delete sha256 hash key")
try:
    del response_json['sha384']
except:
    print("keyError: Fail to delete sha384 hash key")
try:
    del response_json['sha512']
except:
    print("keyError: Fail to delete sha512 hash key")   

我可以这样做,但是如果第一个 del 代码引发错误,那么其余的代码将不会被执行,对吧?

try:
    del response_json['sha1']
    del response_json['sha224']
    del response_json['sha256']
    del response_json['sha384']
    del response_json['sha512']
except:
    print("keyError: Fail to delete hash key")

感谢您阅读本文

【问题讨论】:

  • 在您询问的失败条件下运行代码时会发生什么。不要问我们是否有效果——试试吧。在您能够证明一个明确的问题之前,您没有 Stack Overflow 问题。
  • 请阅读 this 以了解如何在 stackoverflow 中提问。

标签: python try-catch except


【解决方案1】:

使用循环来迭代值

lst = ['sha1','sha224','sha256','sha384','sha512']
for s in lst:
    try:
        del response_json[s]
    except:
        print(f"keyError: Fail to delete {s} hash key")

【讨论】:

    【解决方案2】:

    我认为 response_json 是一本字典,而不仅仅是一个列表。 我认为你需要一些更有活力和适应所有情况的东西。只需填充键并一个接一个地删除每个键值对。 此解决方案适用于您将来可能遇到的任何长度和任何字典。

    json_keys = [ key for key in response_json]
    for keys in json_keys:
        try:
            del response_json[keys]
        except:
            print(f"keyError: Fail to delete hash key")      
    

    【讨论】:

    • 这段代码删除了 response_json 中的每个键,对吧?那么这不是我想要的,但谢谢你回答我的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-28
    相关资源
    最近更新 更多