Python:布尔人就地“不”

时间:2018-02-19 16:48:37

标签: python python-3.x boolean assignment-operator

我有时会收到如下布尔词典的字典;

d = {'a': True, 'b': False, 'c': False}

我将其用作所有必须打开(True)的开关集合,以便进行某些操作。在迭代时,这些开关然后被翻转,例如

for char in text:
    if char == '0':
        d['a'] = not d['a']  # State of 'a' is switched
    ...

上面两次'a'被抬起来的事实困扰着我。我是按1-1来表示交换机的值,我可以像d['a'] *= -1一样进行切换,只引用d['a']一次。

理想情况下,Python会为我提供就地“非分配”操作符。

1 个答案:

答案 0 :(得分:1)

我找到了我的操作员!可以使用按位XOR赋值运算符

d['a'] ^= True

我还没有理解按位运算符应该如何与常规Python类型一起使用,但我猜它们的工作方式与布尔值相同。