什么是“pythonic”方法,在提取元素并在比较中使用它之前检查元素是否在字典中?
例如:
目前,我做
if "key1" in list2 and list2["key1"]=="5":
print "correct"
如果失败,它将在第一个条件下短路。但是,这导致了长条件陈述。
是否有更“pythonic”的方法?我猜测在try catch中包含条件是一个更糟糕的想法。
答案 0 :(得分:7)
不 - 尝试/除非绝对没问题:
try:
if list2['key1'] == '5':
# do something
except KeyError:
# key wasn't found
except ValueError:
# most likely value wasn't comparable...
答案 1 :(得分:6)
这种方法完全是pythonic。另一个略有不同的是
if list2.get("key1", <-1,0 or any sensible default, e.g. None>) == 5:
print "correct"
使用这种方法,您可以使用dict.get
方法,该方法允许从dict安全地提取值(并提供指定默认值的方法)
答案 2 :(得分:4)
if list2.get("key1")==5:
print("correct")
但我不会把字典称为“list2”。
如果值可以为None,则可以选择其他默认值:
if list2.get("key1", object()) in my_other_list:
print("correct")
或使用例外或“长”方式。
答案 3 :(得分:0)
在我看来,最狡猾的方式是
print 'correct' if list2.get('key1') == 5