2013-10-11 39 views
1

我正在處理字典的錯誤處理。是否有一種方便的方法來檢查這些密鑰中的每一個是否都在我正在搜索的字典中,而不會將它們全部跳過(通過將它們放入一個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!" 
+0

鑑於你的錯誤信息和字典鍵是一樣的,你可以把鑰匙放在了一個列表,然後使用一個for循環... –

+0

你可以窩在'嘗試... except'塊,但根本不會真的減少你的LOC。最好循環遍歷鍵和錯誤消息之間的映射。 –

+0

因此,像 代碼 在dict.keys()鍵: 嘗試: 鍵= self.getList(字典[關鍵]) 除了KeyError異常: 打印 「錯誤」 代碼 可以工作... (無法弄清楚如何在評論中做代碼...) Thanks @ EmmettJ.Butler – jbarney

回答

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]