每个开关的情况下都在工作

时间:2019-07-18 04:47:48

标签: python python-3.x list switch-statement set

我正在尝试在python中使用switch case来删除set中的元素,但是问题是switch h的每种情况都在运行

这是我在python 3中尝试过的

if __name__ == '__main__':
    s = set([1,2,3,4,6,5])
    d = 5


    switcher = {'pop':s.pop(),
                'remove':s.remove(5),
                'discard':s.discard(4)}
    switcher.get('remove', 'nothing')
    print(s)

{2,3,6}

以退出代码0结束的过程

1 个答案:

答案 0 :(得分:1)

Python没有switch语句。那是一个命令。 set([])语法也已过时。请改用{}

s = {1,2,3,4,6,5}

如果要延迟对表达式的求值,可以使用lambda

switcher = {'pop': lambda: s.pop(),
            'remove': lambda: s.remove(5),
            'discard': lambda: s.discard(4)}
switcher.get('remove', 'nothing')()

当您要评估它时,别忘了调用它。

但是有一种更通用的方法来定义带有名称的函数:类。

if __name__ == '__main__':
    s = {1,2,3,4,6,5}
    class Switcher:
        def pop():
            s.pop()
        def remove():
            s.remove(5)
        def discard():
            s.discard(4)
    Switcher.remove()
    print(s)

请注意,这些“方法”没有self参数,因此您不需要实例。就像lambda dict一样,它只是一个具有功能的结构。