我只是在与一些代码作斗争,并且需要您的帮助!Python 2.7.10:在DICT中使用LAMBDA和LOGICAL运算符来选择一个案例
目的:
- 不使用IF语句
- 选择的情况下,做一些根据情况
- 没有Python的开关,因为Python的2.7.10使用!
这里是还未起作用代码 - >取决于值NBINS它应该选择某种功能或直接做一个计算(例如lambda x: x==nbins: bucket-=1
)
def caseSwitcherCheckBucket(bucket):
choose = {
lambda x: x==nbins: maxBucket,
lambda x: x<nbins: defaultBucket,
}
func = choose.get(bucket)
return func()
def defaultBucket(bucket):
print 'defaultBucket():', bucket
return bucket
def maxBucket(bucket):
bucket-=1
print 'maxBucket():', bucket
return bucket
我发现这个范例:Python dictionary instead of switch/case并想要做戴夫韦伯提出的建议。在这里他的代码:
values = {
lambda x: x < 4: foo,
lambda x: x > 4: bar
}
不幸的是,它在这种情况下不起作用! 我该如何解决这个问题?
+++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++
通常我使用这种“CaseSwitcher” - >这里是一个例子!
def caseSwitcherCheckLogStatus(check_log_status):
choose = {
True: entLog,
False: doNothing,
}
func = choose.get(check_log_status)
return func()
def entLog():
data[i,[0,1,2]] = 10**(data[i,[0,1,2]])
def doNothing():
pass
+++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++
如果您对我如何改进我的“CaseSwitcher”一般情况有所了解,我也很乐意得到一些建议。
Python中的任何版本有一个switch语句,并没有,也绝不会是一个版本2.10。 – chepner
http://stackoverflow.com/help/mcve –
对不起,我有一个错字 - >我正在使用2.7.10!而且,好的,我明白这个错误,我认为Python 3.0有一个。我是这个领域的新手。 – firefly2517