使用是否更好:
var = "Test"
dictionary = {"test": "test", "test2": "test2"}
try:
var2 = dictionary[var]
except KeyError:
pass
或:
var = "test"
if (var == "test" or var == "test2"):
dosomething()
其中哪一种更好的方法? 此代码旨在防止用户输入该字符串 无效。
答案 0 :(得分:2)
嗯,老实说,这些方法都不理想。第一个使用dict
作为副作用,并且不必要地冗长;当有很多or
串在一起时,第二个是非常笨拙的写作和阅读。
我建议您使用in
运算符和set
:
if var in {'test','test2'}:
#do something
在您的第一个示例中,您使用dict
作为set
替补,您应该使用正确的set
。当您实际将键映射到值时,您希望使用dict
。
答案 1 :(得分:0)
如果您希望var
值只是其中一个,请使用以下模式:
var = 'test'
allowed = 'one', 'two', 'three', 'test'
if var in allowed:
doSomething()
else:
doSomethingElse()
对于字典,您可以像这样修改条件:
if var in dictionary.keys():
答案 2 :(得分:-1)
我会选择try
/ except
,主要是因为您不必明确列出所有可接受的值。你可以使用if var in dictionary.keys()
,但为什么不只是一个内置的字典方法?
value = dictionary.get(var) # if it does not find var in the dictionary, returns None
if value is None:
doSomething()
当然,当你有这样的字典时,这不能正常工作:{var: None}
;它将返回None
,无论它是否可以在字典中找到。但是如果你不期望任何NoneType
个对象作为值,那么这就是要走的路:)。