【问题标题】:Mass Error Checking without Skipping不跳过的批量错误检查
【发布时间】:2013-10-11 20:34:42
【问题描述】:

我正在处理字典的错误处理。有没有一种巧妙的方法来检查这些键中的每一个是否都在我正在搜索的字典中,而不是全部跳过(通过将它们放入一个 try 块中)如果一个生成错误?

显然,我可以一次检查每个键并且效果很好,但我正在寻找一种更好/更漂亮的方法来做到这一点。

代码:

try:
    categories = self.getList(dict[categories])
except KeyError:
    print "No categories found!"

try:
    interests = self.getList(dict[interests])
except KeyError:
    print "No interests found!"

try:
    shops_at = self.getList(dict[shops_at])
except KeyError:
    print "No shops_at found!"

try:
    eats_at = self.getList(dict[eats_at])
except KeyError:
    print "No eats_at found!"

【问题讨论】:

  • 看到你的错误信息和字典键是一样的,你可以把键放在一个列表中并使用for循环...
  • 您可以嵌套 try...except 块,但这并没有真正减少您的 LOC。最好遍历键和错误消息之间的映射。
  • 所以类似于 dict.keys() 中的 key 代码:try: key = self.getList(dict[key]) except KeyError: print "error" code 那可以工作......(不能弄清楚如何在 cmets 中编写代码......)谢谢@EmmettJ.Butler

标签: python dictionary keyerror


【解决方案1】:

这是一种通过循环复制上述代码功能的方法。

params = {categories: "categories", interests: "interests",
        shops_at: "shops_at", eats_at: "eats_at"}

for k in params:
    try:
        value = self.getList(dict[k])
    except KeyError:
        print "No %s found!" % params[k]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-20
    • 1970-01-01
    • 1970-01-01
    • 2019-07-22
    • 1970-01-01
    • 2018-01-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多