Python 如何处理;否则";转换“时”时的第条;如果..elif..else“;语句转换为字典查找?

Python 如何处理;否则";转换“时”时的第条;如果..elif..else“;语句转换为字典查找?,python,if-statement,technical-debt,Python,If Statement,Technical Debt,我正在尝试将python中的“if-else”语句转换为字典 我试着把它转换成字典,但如何处理最后一个else子句 val=3 if val==1: print "a" elif val==2: print "b" elif val==3: print "c" elif val==4: print "d" else: print "value not found:" print "===========Converted if else into dictionary =

我正在尝试将python中的“if-else”语句转换为字典

我试着把它转换成字典,但如何处理最后一个else子句

val=3

if val==1:
  print "a"
elif val==2:
  print "b"
elif val==3:
  print "c"
elif val==4:
  print "d"
else:
  print "value not found:"

print "===========Converted if else into dictionary ==================="

DATA_SOURCE = {1:"a",2:"b",3:"c",4:"d"}
print DATA_SOURCE[val]
我已创建此代码作为替换:

if not DATA_SOURCE.has_key(val):
  print "value not found:"
else:
  print DATA_SOURCE[val]

它是等效的吗

您可以使用
dict.get
方法:

print DATA_SOURCE.get(val, "value not found")
如果
val
不是键,则返回
“未找到值”
,而不影响字典

如有疑问,请一如既往地使用帮助:

>>> help(dict)

我想你正在寻找

val = 3
dct = {1:"a", 2:"b", 3:"c", 4:"d"}
if dct.get(val) == None: print "Value Not Found"

@加热器887可用于减少编码次数lines@Thecheater887我想你会发现这个问题和答案很有趣。c:@PeterWood是一个学习的地方,我刚刚学会了对一个直言不讳的人直言不讳,伤害比我记忆中要大得多。桥梁修好了。((现在回到主题…)@VigneshKalai,这取决于看到它的人的眼睛。有些人可能会把它看作是金子,而其他人,比如我,则把它看作是一种攻击。。我想是时候把透视图升级到v0.0.2了:P@Thecheater887我希望你留下来。我没想到别人会认为我直言不讳。关于从代码中删除条件的文章确实帮助了我对设计的思考。我刚才用一个相关的SO链接回答了你的问题。看,从伟大的世界。和平。
dict.get
的一个好处是,你不必进行这种比较。@juanchopanza我明白为什么我现在被否决了。。我以前没有这样做,因为当我在解释器或cmd.interest中尝试它时失败了。哪一个失败了?另外,哪个python版本?
DATA\u SOURCE.get()
带有
AttributeError:“set”对象没有属性“get”
和python 2.7.10。但是
DATA\u SOURCE
是一个
dict
,而不是
set